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

Linux 環境変数の設定

これは Bash の man ページからの抜粋です:

<ブロック引用>

export [-fn] [名前[=単語]] ...
エクスポート -p
指定された名前は、その後に実行されるコマンドの環境に自動的にエクスポートされるようにマークされます。 -f オプションを指定すると、名前は関数を参照します...

現在の環境でのみ変数が必要な場合は、エクスポートを使用する必要はありません。

var=value

編集:

エクスポートなし:現在の環境のみ。エクスポートあり:現在の環境と子環境。

以下は、子環境での変数の可用性に対するエクスポートの影響と、子環境での変更が親に影響を与えないことのデモンストレーションです:

$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []

最初のエコーの後 (echo "parent..." ) "123" と "456" が表示されるのは、どちらも var1 であるためです。 そして var2 現在の環境でアクティブです。 var3 の値が表示されない まだ設定されていないためです。

var3=...」で始まる行の後 " var1 の値が表示されません 輸出されていないからです。あなたはする var2 の値を参照してください だったから エクスポートされました。 var3 の値が表示されます 子環境用に設定されているためのみ .

(bash -c -c への引数の内容でスクリプトを実行するのと同じです オプション。スクリプトまたはその他の実行可能ファイル、またはこの場合は bash -c への引数 現在の環境の子になり、その結果、もちろん子の親になります。)

「スクリプト」では、変数の値が変更されます。これらの新しい値が出力されます。

「スクリプト」が終了すると、実行は親環境 (この場合はコマンド ライン) に戻ります。最後のエコーの後、元の値が表示されます。これは、子環境で行われた変更が親に影響しないためです。


あなたはそれを言います

<ブロック引用>

私は常に export コマンドを使用して環境変数を設定しています

ちなみに、あなたが本当に環境変数を持続させる方法を尋ねようとしているように聞こえます。そのためには、export VAR="foo" を配置する必要があります。 $HOME/.bash_profile ファイル内のステートメント (bash を使用している場合)。その環境変数を root 以外のすべてのユーザーに対して持続させたい場合は、それを /etc/profile に追加します。 root ユーザーにも追加する場合は、 /root/.bash_profile に設定します。

これは、選択したシェルが bash であるすべてのログイン シェルで機能します。非ログイン シェルの場合は、.bashrc を使用する必要があります。他のシェルについて提供できる洞察はありません:D


Linux
  1. シェル環境変数の設定| BASHシェル

  2. Linux – Linuxの非特権ユーザーには、環境変数が表示されますか?

  3. Linuxエクスポートコマンド

  1. Linux での「su」および「sudo」によるユーザー環境変数

  2. Linux Mint - 環境変数を永続的に追加する

  3. Ansible で Linux 環境変数を設定する方法

  1. Linuxで環境変数とシェル変数を設定/作成する方法

  2. Linux で環境変数を設定、一覧表示、および削除する方法

  3. 環境変数は Linux で非特権ユーザーに表示されますか?