Bashの組み込みコマンド「set」と「export」は何をしますか?

Bashの組み込みコマンド「set」と「export」は何をしますか?

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」を使用すると
    コマンドが「受け入れ」(エラーなし)するため、混乱する可能性があります。

関連情報