web-dev-qa-db-ja.com

すべてのシェル変数を一覧表示するにはどうすればよいですか?

この質問について読む: zshでは、どのようにすればすべての環境変数をリストできますか? 、どうすればすべてのシェル変数をリストできますか

また、Shell変数とenvironment変数の違いは、zsh以外のシェルにも適用されますか?

私は主にBashとZshに興味がありますが、他のメインストリームシェルでこれを行う方法を知っておくとよいでしょう。

21
Josh

すべてのシェル変数を一覧表示する

bash:_set -o posix ; set_を使用します。 POSIXオプションは、関数定義などの情報を出力しすぎないようにするためのものです。 _declare -p_も機能します。

zshtypesetを使用

シェル変数と環境変数

環境変数はexec()- edの子プロセスで使用できます(コピーとして。親プロセスが変数を変更した場合、子環境は更新されません)。非環境変数は、現在実行中のシェルとfork()- edサブシェルでのみ使用できます。この違いは、すべてのシェルに存在します。

(コメントにより完了)

23
Uriel

多くの選択肢があります:

printenv

指定された環境変数の値を出力します。 VARIABLEが指定されていない場合は、それらすべての名前と値のペアを出力します。

env

env-変更された環境でプログラムを実行する

エクスポート

環境変数を設定します。環境内の子プロセスに渡される各名前をマークします。

-p入力として再利用できる形式で出力を表示します。

名前が指定されていない場合、または「-p」オプションが指定されている場合は、エクスポートされた名前のリストが表示されます。

セット

シェル変数を取得するのにも役立ちます。

追加情報(整数、エクスポート)が必要な場合は、代わりに使用する必要があります

タイプセット

exportには、その出力をすぐにシェルに読み戻すことができるという利点があります。

最後に、

compgen -v

オプションに応じて可能な補完を表示します。

値や追加情報なしで、すべての変数、シェル、環境が表示されます。変数値を見つけるには、echo $ VARIABLE_NAMEを実行する必要があります。しかし、少なくともリストは完全です。 zshではなく、bashに属しています。

10
MariusMatutiae

zshを使用すると、typesetよりも多くの情報を提供するsetを使用できます。変数のタイプ。必要に応じて、grepまたはsedを使用して出力をフィルタリングできます。環境変数は、出力でexportedとしてマークされます。

3
vinc17