簡単な話:set
シェルローカル変数、env
を表示できます
シェルは、現在のシェルからのみアクセスできるローカル変数と、実行されるすべてのプログラムに渡される (エクスポートされた) 環境変数の 2 種類の変数を持つことができます。
set
以降 組み込みです shell コマンドを使用すると、シェルローカル変数 (シェル関数を含む) も表示されます。 env
一方、独立した実行可能ファイルです。シェルから渡された変数、または環境変数のみが表示されます。
a=1
のような行を入力すると 次に、ローカル変数が作成されます (環境に既に存在していない場合)。環境変数は export a=1
で作成されます
set
の出力を制限したい場合 コマンドを変数のみに追加します。POSIX モードで実行できます:
type -a env set
help set
(set -o posix; set) | nl
特定の変数のリストを細かく制御する必要がある場合は、declare
などの Bash ビルトインを使用できます。 または compgen
、またはその他の Bash トリック。
man bash | less -p '-A action$' # info on complete & compgen
# listing names of variables
compgen -A variable | nl # list names of all shell variables
echo ${!P*} # list names of all variables beginning with P
compgen -A export | nl # list names of exported shell variables
export | nl # same, plus always OLDPWD
declare -px | nl # same
declare -pr # list readonly variables
# listing names of functions
compgen -A function | nl
declare -F | nl
declare -Fx | nl
# show code of specified function
myfunc() { echo 'Hello, world!'; return 0; }
declare -f myfunc
set
env
はシェルのビルトインです。 プログラム (/usr/bin/env) です
set
いくつかのことを行いますが、それ自体で環境変数を一覧表示します。 set +x
などのスイッチを設定/トグルすることもできます または set -v
など
env
エクスポートされた 環境変数ですが、変更された環境でプログラムを実行できます
man 1 env
を参照 詳細については、