set
私はBashの目的とそれが何のために使用されるのかについて少し混乱しています。export
(他のシェルもおそらく同じようです)。
環境変数を設定するためのようですが、を通しても可能でしょうかVARIABLE=VALUE
?
また、個別に異なる値を入力してset
表示export
します。
では、その目的は何ですか?
答え1
export
現在のプロセスの子プロセスにエクスポートするために指定された変数を表示します。デフォルトでは、その変数はエクスポートされません。たとえば、
$ foo=bar
$ echo "$foo"
bar
$ bash -c 'echo "$foo"'
$ export foo
$ bash -c 'echo "$foo"'
bar
set
一方、シェルプロパティと位置パラメータが設定されます。
$ set foo=baz
$ echo "$1"
foo=baz
baz
に割り当てられておらず、foo
文字通りの位置パラメータになります。set
できる他のタスク(主にシェルオプション)がたくさんあります。を参照してくださいhelp set
。
印刷の場合、export
引数なしで呼び出すと、シェル環境のすべての変数が印刷されます。set
変数も印刷いいえ出口。また、他のオブジェクトをエクスポートすることもできます(これは移植可能ではありませんが)。を参照してくださいhelp export
。
答え2
シェルのプロパティと位置パラメータの設定については、help set
または:setを参照してください。info bash set
エクスポートされていない変数は子プロセスから継承されません。export
エクスポートする変数を表示するために使用されます。
答え3
「エクスポート」コマンドを変数をグローバル変数にすると考えることができます。
より良い理解のために、前の回答に次の例を添付します。
x=1
bash -c 'echo $x'
# nothing show
export x
bash -c 'echo $x'
# value of x shown
- Windowsユーザーの場合、「set」を使用すると
コマンドが「受け入れ」(エラーなし)するため、混乱する可能性があります。