web-dev-qa-db-ja.com

.bashrcで環境変数を設定する最良の方法は何ですか?

.bashrcで変数を設定する場合、これを使用する必要がありますか?

export VAR=value

それともこれで十分でしょうか?

VAR=value

正確な違いは何ですか(ある場合)?

11
Flávio Amieiro

最良の方法

export VAR=value

違い

している

VAR=value

スクリプトの実行中にのみ変数を設定します(この場合は.bashrc)。スクリプトの子プロセス(存在する場合)にはVARが定義されておらず、スクリプトが終了するとVARはなくなります。

export VAR=value

子プロセスに渡される変数のリストにVARを明示的に追加します。やってみませんか?シェルを開いて

PS1="foo > "
bash --norc

新しいシェルはデフォルトのプロンプトを取得します。代わりにあなたが次のようなことをするなら

export PS1="foo > "
bash --norc

新しいシェルは設定したプロンプトを取得します。

pdate:.bashrcで設定された変数の下でIan Kellingが注記しているように、.bashrcをソースとしたシェルで永続化します。より一般的には、シェルがスクリプトをソースするときはいつでも(source scriptnameコマンドを使用して)、スクリプトに設定された変数はシェルの存続期間中持続します。

16
agnul

どちらも問題なく動作するようですが、エクスポートを使用すると、変数がサブシェルや他のプログラムで使用できるようになります。これをテストするには、これを試してください。

これらの2行を.bashrcファイルに追加します

TESTVAR="no export"
export MYTESTVAR="with export"

次に、新しいシェルを開きます。

ランニング echo $TESTVARおよびecho $MYTESTVARは、各変数の内容を表示します。同じシェル内で、.bashrcファイルからこれらの2行を削除し、bashを実行してサブシェルを開始します。

ランニング echo $TESTVARは空の出力になりますが、実行中のecho $MYTESTVARは「エクスポートあり」を表示します

10
Mike H