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