私はUbuntu11.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
変更された環境でプログラムを実行し、すべての変更を却下します。
変数を設定するには のみ 現在のシェルの場合:
VARNAME="my value"
現在のシェル用に設定するには、次のようにします。 すべてのプロセス 現在のシェルから開始:
export VARNAME="my value" # shorter, less portable version
それを設定するには 永久に 将来のすべてのbashセッションでは、そのような行をあなたの行に追加します .bashrc
あなたの中のファイル $HOME
ディレクトリ。
それを永続的に設定するには、 システム全体 (すべてのユーザー、すべてのプロセス)/etc/environmentにset変数を追加します:
sudo -H gedit /etc/environment
このファイルは、次のような変数の割り当てのみを受け入れます:
VARNAME="my value"
を使用しないでください。 export
ここのキーワード。
環境変数の変更が行われるように、現在のユーザーからログアウトして再度ログインする必要があります。
環境変数を一度設定するには、次のコマンドを使用します。 export
シェルスクリプトではなく、プロンプト内のコマンド:
$ export THEVAR=/example
この変数は、シェルセッションの残りの部分、または設定が解除されるまで設定されます。
毎回環境変数を設定するには、次のコマンドを使用します export
のコマンドは、 .bashrc
ファイル(またはシェルの適切な初期化ファイル)。
スクリプトから環境変数を設定するには、次のコマンドを使用します 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でのみテストされています)、次の手順を使用します:
- 端末を開く(を押して CtrlAltT)
sudo -H gedit /etc/environment
- パスワードを入力します
- 開いたばかりのテキストファイルを編集します:
たとえば、追加したい場合 FOO=bar
、その後、ちょうど書く FOO=bar
新しい行で
- それを保存します
- 一度保存し、ログアウトし、再びログインします。
- 必要な変更が行われます。
スクリプトが完了した後に環境/varの変更を永続化するには、次を使用する必要がありますsource ./script.sh
またはsourceの省略表記、"。"、のような . ./script.sh
Sourceは、スクリプト内のコマンドを入力したかのように実行します。.. したがって、終了など、スクリプトのいくつかの側面が変更されます。.. したがって、スクリプトが何かをチェックし、falseの場合に終了することを決定した場合、たとえば exit 0
、それはあなたの現在の端末/シェルセッションを終了します。
私はそれがかなり遅いことを知っていますが、すべてのユーザー(JAVAの使用など)の環境変数を追加したい場合は、次のことを行うことができます:
1)オープン /etc/bash.bashrc
nanoを使用する(どんなエディタでも使用できますが、使いやすさに関しては最悪なので、VIMを好まない-個人的なものは何もありません)。
2)ファイルに追加する:
export VAR=path export PATH=$PATH:/bin
3)(ボックスをバウンスできる場合はより良い)-または単に新しいSSHセッションを開き、`env'コマンドを使用して確認します。
ただし、各ユーザーに個別の設定をさせたい場合は、次のように変更(スクリプト化)する必要があります .bashrc
下のファイル ~/.bashrc
(または /home/$USER/
Linuxシステムを初めて使用する場合)
Maxx
#7
あなたがスクリプトを介して物事をやっている場合は、永続的に環境変数を設定するための一つの簡単な方法は、スクリプト内の文の下に置かれ,
if [[ ! -d "$MyVar" ]]; then export MyVar="abc" echo 'export MyVar="abc"' >> ~/.bashrcfi
Pwdのような式を評価する必要がある場合は、次のように使用できます,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
UbuntuまたはUnixベースのシステムを使用している場合は、次の変数をエクスポートします。 ~/.bashrc
ファイル。 それは隠しファイルであり、ターミナルを介して、またはファイルシステムに隠しファイルを再表示することによってそこに着くことができます。
次に、ファイルを編集して設定します export THEVAR=/example
そこに、保存し、それが行われています。
TOMCATを使用してJAVAアプリケーションをデプロイする場合は、次の方法で環境変数を設定できます:
1.sudo suとcdを/var/lib/tomcat8/bin/(またはtomcatのbinパスのいずれか)に移動します。
タッチsetenv.sh(存在しない場合)、ファイルが既に存在する場合は'vi'を実行しますsetenv.sh'
chmod777setenv.sh (ファイルを実行可能にする)
vi setenv.sh そして、setenvに次の行を設定します。shexportキー=値
sudo systemctl tomcatを再起動します。サービス
Javaファイルでは、次のコードを使用して変数が設定されているかどうかを確認できます
private static void printEnv() { System.out.println("******************************Environment Vars*****************************"); Map<String, String> enviorntmentVars = System.getenv(); enviorntmentVars.entrySet().forEach(System.out::println); System.out.println("******************************system Vars*****************************"); Properties enviorntmentProperties = System.getProperties(); enviorntmentVars.entrySet().forEach(System.out::println);}
Skylar
#10
もう1つはグローバル変数に関するものですが、これはそのような制限を追加しません。 私はそれを別々に保つだろう。
Harley
#11
Ollie
#12
で定義/エクスポートされた場合。bashrc、それは正常に動作します。