web-dev-qa-db-ja.com

環境変数を追加するにはどうすればよいですか?

Ubuntu 11.04を実行しています。ターミナルを使用してbashセッションを開始し、環境変数を追加します。

$r@hajt:~$ env THEVAR=/example

しかし、それは機能していません。 THEVARが最後の変数であるすべての変数が表示されますが、envへの別の呼び出しではTHEVARが表示されなくなり、env | grep THEVARは何も返しません。

同様に、エクスポート(export THEVAR=/example)または他の変数割り当て(THEVAR=/example)を含むスクリプトは、環境変数を追加しません。

私は何か間違ったことをしていることを知っています。それは単純なものでなければならないことを知っていますが、何を見つけることができません。

更新:私の質問の本当の意味はこれでした: https://stackoverflow.com/questions/496702/can-a-Shell-script-set-environment-variables-of-the-calling-Shell

(とにかく、最も投票された回答を選択し、編集されたタイトルのままにします-それは私が尋ねていたものではありませんでした)

envは、変更された環境でプログラムを実行し、すべての変更を破棄します。

355
huff

現在のシェルに変数onlyを設定するには:

VARNAME="my value"

現在のシェルとすべてのプロセスを現在のシェルから開始するように設定するには:

export VARNAME="my value"      # shorter, less portable version

これを設定するには、今後のすべてのbashセッションで永久を使用して、.bashrcディレクトリの$HOMEファイルにそのような行を追加します。

永続的に設定し、システム全体(すべてのユーザー、すべてのプロセス)に設定変数を/ etc/environmentに追加します。

Sudo -H gedit /etc/environment

このファイルは、次のような変数の割り当てのみを受け入れます。

VARNAME="my value"

ここでexportキーワードを使用しないでください。

環境変数の変更を有効にするには、現在のユーザーからログアウトして再度ログインする必要があります。

554
Michał Šrajer

環境変数を一度設定するには、シェルスクリプトではなく、プロンプトでexportコマンドを使用します。

$ export THEVAR=/example

この変数は、シェルセッションの残りの部分または設定解除されるまで設定されます。

環境変数を毎回設定するには、.bashrcファイル(またはシェルの適切な初期化ファイル)でexportコマンドを使用します。

スクリプトから環境変数を設定するには、スクリプトでexportコマンドを使用してから、sourceスクリプトを使用します。スクリプトを実行すると動作しません。

ソーシングと実行の違いの説明については、この回答を参照してください。 https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and- sourcing-a-bash-script/176788#176788

29
lesmana

Ubuntuで新しい環境変数を永続的に追加するには(14.04でのみテスト済み)、次の手順を使用します。

  1. ターミナルを開きます(押して CtrlAltT
  2. Sudo -H gedit /etc/environment
  3. パスワードを入力してください
  4. 開いたばかりのテキストファイルを編集します。
    例えば。 FOO=barを追加する場合は、FOO=barを新しい行に書き込むだけです
  5. それを保存
  6. 保存したら、ログアウトして再度ログインします。
  7. 必要な変更が行われます。
19
user355501

スクリプトの完了後に環境/変数の変更を保持するには、source ./script.shまたは. ./script.shのようなソース「。」の省略表記を使用する必要があります

ソースは、入力したかのようにスクリプト内のコマンドを実行します...そのため、終了などのスクリプトのいくつかの側面を変更します...たとえば、スクリプトが何かをチェックし、falseの場合は終了することを決定した場合、 exit 0を呼び出すことで、現在のターミナル/シェルセッションを終了します。

8
m0bl

スクリプトを使用して作業を行う場合、環境変数を永続的に設定する簡単な方法の1つは、スクリプトのステートメントの下に配置することです。

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

Pwdのような式を評価する必要がある場合、これを使用できます。たとえば、

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
4
Shital Shah

私はそれがかなり遅いことを知っていますが、すべてのユーザーに環境変数を追加したい場合(例えば、Javaの使用法)-あなたは次のことができます:

1)nanoを使用して/etc/bash.bashrcを開きます(どんなエディターでも使用できますが、VIMは好みではありません。

2)ファイルに追加します:

export VAR=path export PATH=$PATH:/bin 3)(ボックスをバウンスできる場合はより良い)-または単に新しいSSHセッションを開き、「env」コマンドを使用して確認します。

ただし、各ユーザーに個別の設定を行う場合は、.bashrc(またはLinuxシステムを初めて使用する場合は~/.bashrcの下の/home/$USER/ファイルを変更(スクリプト化)する必要があります。 )

0
ha9u63ar