すべてのシェル変数をリストするにはどうすればよいですか?


18

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

また、シェル変数と環境変数の区別は、zsh以外のシェルにも適用されますか?

私は主にBashとZshに興味がありますが、他の主流のシェルでこれを行う方法を知ることは素晴らしいことです。

回答:


21

すべてのシェル変数をリストする

bash:を使用しますset -o posix ; set。POSIXオプションは、関数定義などの大量の情報を出力しないようにするためのものです。declare -p動作します。

zsh : 使用する typeset

シェル変数と環境変数

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

(コメントのおかげで完了しました)


declare -p同じこと
コスタス14

:質問はここにも答えていstackoverflow.com/questions/1305237/...
ウリエル

1
set -o posixzshには存在しません。set関数定義を出力しません。
vinc17

1
set -o posixほとんどのシェルでは構文エラーです。
mikeserv 14

3
シェル変数は子プロセスでも使用できます。子プロセスが新しいプログラムを実行するときに違いが生じます。環境変数はに渡されexecますが、シェル変数は渡されません。
バーマー14

7

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

printenv

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

env

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

書き出す

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

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

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

セットする

シェル変数を取得するのにも便利です。

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

タイプセット

エクスポートには、出力をすぐにシェルに読み戻すことができるという利点があります。

最後に、

compgen -v

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

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


1
exportset少なくとも、シェルの再入力のための引用に関しては、に対する利点はありません。そしてprintenvenvシェル変数に関するものではありませんが、これらは環境変数とよく一致します。
mikeserv 14

3

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.