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
は、変更された環境でプログラムを実行し、すべての変更を破棄します。
現在のシェルに変数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
キーワードを使用しないでください。
環境変数の変更を有効にするには、現在のユーザーからログアウトして再度ログインする必要があります。
環境変数を一度設定するには、シェルスクリプトではなく、プロンプトで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
Ubuntuで新しい環境変数を永続的に追加するには(14.04でのみテスト済み)、次の手順を使用します。
Sudo -H gedit /etc/environment
FOO=bar
を追加する場合は、FOO=bar
を新しい行に書き込むだけですスクリプトの完了後に環境/変数の変更を保持するには、source ./script.sh
または. ./script.sh
のようなソース「。」の省略表記を使用する必要があります
ソースは、入力したかのようにスクリプト内のコマンドを実行します...そのため、終了などのスクリプトのいくつかの側面を変更します...たとえば、スクリプトが何かをチェックし、falseの場合は終了することを決定した場合、 exit 0
を呼び出すことで、現在のターミナル/シェルセッションを終了します。
スクリプトを使用して作業を行う場合、環境変数を永続的に設定する簡単な方法の1つは、スクリプトのステートメントの下に配置することです。
if [[ ! -d "$MyVar" ]]; then
export MyVar="abc"
echo 'export MyVar="abc"' >> ~/.bashrc
fi
Pwdのような式を評価する必要がある場合、これを使用できます。たとえば、
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
私はそれがかなり遅いことを知っていますが、すべてのユーザーに環境変数を追加したい場合(例えば、Javaの使用法)-あなたは次のことができます:
1)nanoを使用して/etc/bash.bashrc
を開きます(どんなエディターでも使用できますが、VIMは好みではありません。
2)ファイルに追加します:
export VAR=path export PATH=$PATH:/bin
3)(ボックスをバウンスできる場合はより良い)-または単に新しいSSHセッションを開き、「env」コマンドを使用して確認します。
ただし、各ユーザーに個別の設定を行う場合は、.bashrc
(またはLinuxシステムを初めて使用する場合は~/.bashrc
の下の/home/$USER/
ファイルを変更(スクリプト化)する必要があります。 )