解決策 1:
最善の方法
export VAR=value
違い
やっています
VAR=value
スクリプトの期間中のみ変数を設定します (.bashrc
この場合)。スクリプトの子プロセス (存在する場合) には VAR が定義されておらず、スクリプトが終了すると VAR
export VAR=value
明示的に VAR
を追加します 子プロセスに渡される変数のリストに。試してみませんか?シェルを開いて実行
PS1="foo > "
bash --norc
新しいシェルはデフォルトのプロンプトを取得します。代わりに次のようなことをすると
export PS1="foo > "
bash --norc
新しいシェルは、設定したばかりのプロンプトを受け取ります。
更新: Ian Kelling が .bashrc
で設定された変数の下に書いているように .bashrc
をソースしたシェルに永続化します .より一般的には、シェルがスクリプトをソースするたびに (source scriptname
を使用) コマンド) スクリプトで設定された変数は、シェルの存続期間中存続します。
解決策 2:
どちらも問題なく動作しているように見えますが、エクスポートを使用すると、サブシェルや他のプログラムで変数を使用できるようになります。これを試すには、これを試してください。
これらの 2 行を .bashrc ファイルに追加してください
TESTVAR="no export"
export MYTESTVAR="with export"
次に、新しいシェルを開きます。
echo $TESTVAR
を実行中 と echo $MYTESTVAR
各変数の内容が表示されます。同じシェル内で、.bashrc ファイルからこれらの 2 行を削除し、bash
を実行します。 サブシェルを開始します。
echo $TESTVAR
を実行中 空の出力がありますが、 echo $MYTESTVAR
を実行しています 「エクスポートあり」と表示されます