OS: ソラリス
シェル: Bash シェル
シナリオ: コマンド「env」、「export」、「set」(引数なし) を別々に入力すると、変数と値のリストが返されます。
私の質問: 3 つのコマンドを入力した後の戻り値の違いは何ですか?
およびコマンドは同じ情報を生成env
しexport
ますが、同じ形式ではありません。Andは、 or (Bourne) シェルのバージョンbash
のexport
出力とは非常に根本的に異なる出力を生成します。とはシェルの組み込みコマンドですが、環境の内容を一覧表示する以外の用途を持つ外部コマンドであることにksh
注意してください(ただし、それはその用途の 1 つです)。set
export
env
この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
。export
env
ないコマンドは、それを実行したプロセスから継承した環境を一覧表示します。このset
コマンドは、セッションで定義されたすべてのシェル変数を表示します。
このexport
コマンドは、上記のサブセット (通常) をリストします。これらは、 または のいずれかで作成されますexport
。declare -x
グローバルに表示される変数 (つまり、子プロセスに表示される)。
このenv
コマンドは、アカウントから別のアカウント、またはマシンからマシンへのスクリプトの移植を有効にするために使用されます。env は、変更された環境または異なる環境でプログラムを実行します。