OS: ソラリス
シェル: Bash シェル
シナリオ: コマンド「env」、「export」、「set」(引数なし) を別々に入力すると、変数と値のリストが返されます。
私の質問: 3 つのコマンドを入力した後の戻り値の違いは何ですか?
およびコマンドは同じ情報を生成envしexportますが、同じ形式ではありません。Andは、 or (Bourne) シェルのバージョンbashのexport出力とは非常に根本的に異なる出力を生成します。とはシェルの組み込みコマンドですが、環境の内容を一覧表示する以外の用途を持つ外部コマンドであることにksh注意してください(ただし、それはその用途の 1 つです)。setexportenv
このsetコマンドは、作成した変数を一覧表示します。これには、環境変数、通常の (環境以外の) 変数、および関数定義 (ここでは無視します) が含まれます。
検討:
x1=abc
x2=def; export x2
export x3=ghi
2 つのエクスポートされた変数 (x2およびx3) と、1 つの通常の (エクスポートされていない) 変数があります。setコマンドは 3 つすべてを一覧表示します。エクスポートされたもののみをリストしますexport。env
コマンドの出力はenv、POSIX 標準によって義務付けられています。これは、変数名と値の後に改行が続くだけです。
name=value
従来、Bourne シェルは、 と の両方に対して同じ方法で変数をリストするだけsetでしexportた。
Korn シェルは、保護が必要なスペースまたはその他の文字が値に含まれている場合は値を引用符で囲みますが、それ以外の場合はname=value表記法を使用します。
のsetコマンドはbash、値が引用符で囲まれた割り当てを生成します。ただし、出力exportはdeclare -x var=value引用符付きで保護されています。export > file一般的な考え方は、おそらくsource file、環境変数を、export.
setシェル変数をリストし、関数もリストする場合があります。exportコマンドは、環境変数を一覧表示します。set。exportenvないコマンドは、それを実行したプロセスから継承した環境を一覧表示します。このsetコマンドは、セッションで定義されたすべてのシェル変数を表示します。
このexportコマンドは、上記のサブセット (通常) をリストします。これらは、 または のいずれかで作成されますexport。declare -xグローバルに表示される変数 (つまり、子プロセスに表示される)。
このenvコマンドは、アカウントから別のアカウント、またはマシンからマシンへのスクリプトの移植を有効にするために使用されます。env は、変更された環境または異なる環境でプログラムを実行します。