この質問について読む: zshでは、どのようにすればすべての環境変数をリストできますか? 、どうすればすべてのシェル変数をリストできますか?
また、Shell変数とenvironment変数の違いは、zsh以外のシェルにも適用されますか?
私は主にBashとZshに興味がありますが、他のメインストリームシェルでこれを行う方法を知っておくとよいでしょう。
bash
:_set -o posix ; set
_を使用します。 POSIXオプションは、関数定義などの情報を出力しすぎないようにするためのものです。 _declare -p
_も機能します。
zsh
:typeset
を使用
環境変数はexec()
- edの子プロセスで使用できます(コピーとして。親プロセスが変数を変更した場合、子環境は更新されません)。非環境変数は、現在実行中のシェルとfork()
- edサブシェルでのみ使用できます。この違いは、すべてのシェルに存在します。
(コメントにより完了)
多くの選択肢があります:
printenv
指定された環境変数の値を出力します。 VARIABLEが指定されていない場合は、それらすべての名前と値のペアを出力します。
env
env-変更された環境でプログラムを実行する
エクスポート
環境変数を設定します。環境内の子プロセスに渡される各名前をマークします。
-p入力として再利用できる形式で出力を表示します。
名前が指定されていない場合、または「-p」オプションが指定されている場合は、エクスポートされた名前のリストが表示されます。
セット
シェル変数を取得するのにも役立ちます。
追加情報(整数、エクスポート)が必要な場合は、代わりに使用する必要があります
タイプセット
exportには、その出力をすぐにシェルに読み戻すことができるという利点があります。
最後に、
compgen -v
オプションに応じて可能な補完を表示します。
値や追加情報なしで、すべての変数、シェル、環境が表示されます。変数値を見つけるには、echo $ VARIABLE_NAMEを実行する必要があります。しかし、少なくともリストは完全です。 zshではなく、bashに属しています。
zsh
を使用すると、typeset
よりも多くの情報を提供するset
を使用できます。変数のタイプ。必要に応じて、grep
またはsed
を使用して出力をフィルタリングできます。環境変数は、出力でexported
としてマークされます。