set
私は、PATH などの環境設定のリストのみを表示するbash コマンドに慣れています。
しかし、私がセットアップしたばかりの Ubuntu システムでは、実行するとset
、次のような多くの関数を含む 2000 行のテキストがダンプされます。
dequote ()
{
eval printf %s "$1" 2> /dev/null
}
環境変数のみを印刷するにはどうすればよいですか?
答え1
デフォルトではset
、シェル変数環境変数だけでなく、bash
関数も変数の一部とみなされます。https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference。
env
またはをprintenv
使用すると、環境子プロセスにエクスポートされますが、必然的にあなたの環境と同じですbash
:
$ foo=1
$ printenv foo
$ export foo
$ printenv foo
1
bashdeclare
とtypeset
組み込み関数では、関数を省略するために、すべてのタイプの変数をリストできます。
declare -F
これらの出力は、シェル スクリプトで状態を再現するのに適した形式であるため、少し冗長ですが、配列、整数、その他の型を区別できます (バージョンによって異なります)。 の出力も参照してくださいexport -p
。
そしてhttps://stackoverflow.com/questions/1305237/how-to-list-variables-declared-in-script-in-bash
bash に POSIX モードを使用するように指示すると、set
「適切に」動作します。
( set -o posix ; set )
これはサブシェルで実行されるため、実行中のシェルは変更されず、継承された環境にまだエクスポートされていない変数が正しく取得されます。
答え2
すべての環境変数を一覧表示したい場合は、 と入力するだけですenv
。