GNU/Linux >> Linux の 問題 >  >> Linux

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

解決策 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 を実行しています 「エクスポートあり」と表示されます


Linux
  1. ユーザー環境変数を設定する方法は? (永続的に、セッションではありません)?

  2. 環境変数を設定するための最良のディストリビューション/シェルにとらわれない方法は何ですか?

  3. プロセスが親の環境を継承する場合、なぜエクスポートが必要なのですか?

  1. 環境変数のデフォルトという用語はどこで設定されますか?

  2. Linux 環境変数値の最大サイズは?

  3. Javaでメモリ不足の状態を処理する最良の方法は何ですか?

  1. シェルコマンドを使用してGDB内で環境変数を設定するには?

  2. $HOME 環境変数はどこに設定されていますか?

  3. PS1 シェル変数の正しい場所は?