簡単な話: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 を参照 詳細については、