BashでLC_CTYPEなどの現在の値を取得するには?

BashでLC_CTYPEなどの現在の値を取得するには?

基本的に実装する方法これバッシュから?構文解析の出力にlocaledeclare "$(locale | grep ^LC_CTYPE | tr --delete '"')"4つの個別のコマンドが含まれているため、悪いようです。localeほとんどまたはすべての変数の値が印刷されても、その変数が実際に設定されているわけではありません。たとえば、私のコンピュータでは(別の行で)locale印刷されますが、何も印刷されません。LC_CTYPE="en_NZ.UTF-8"echo "$LC_CTYPE"

ベストアンサー1

評価結果が安全であると仮定します(シェル関数、エイリアス、または他の非標準ユーティリティはlocale想定しません)。locale

(eval "$(locale)" && printf '%s\n' "$LC_CTYPE")

これはLC_サブシェル環境ですべての関連変数を設定し、その値を印刷しますLC_CTYPE。サブシェル内で実行すると、eval変数が親環境を汚染するのを防ぎますLC_

OpenBSDシステムで実行されている例では、次のように設定しましたLANG=C.UTF-8

$ (eval "$(locale)" && printf '%s\n' "$LC_CTYPE")
C.UTF-8

レポートに設定されていない値LC_CTYPEで変数を設定(およびエクスポート)する場合localeその他可変的な:

$ export LC_CTYPE="$(eval "$(locale)" && printf '%s\n' "$LC_CTYPE")"
$ printf '%s\n' "$LC_CTYPE"
C.UTF-8

おすすめ記事