環境変数を追加するにはどうしたらいいですか?

私はUbuntu 11.04を使用しています。ターミナルを使ってbashセッションを開始し、環境変数を追加したいと思っています。

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

しかし、これがうまくいきません。すべての変数が表示され、THEVARが最後に表示されますが、envを再度呼び出してもTHEVARはもう表示されません-env | grep THEVARは何も返しません。

同様に、export (export THEVAR=/example) や他の変数の割り当て (THEVAR=/example) を行ったスクリプトでは、環境変数が追加されません。

何か間違ったことをしているのはわかっていますし、簡単なことのはずなのですが、どうしてもそれがわかりません。

UPDATEです。 私の質問の本当の意味は、この質問でした。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セッションで永続的に設定するには、$HOMEディレクトリの.bashrcファイルにこのような行を追加します。

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

sudo -H gedit /etc/environment

このファイルは、次のような変数の割り当てしか受け付けません。

VARNAME="my value"

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

環境変数の変更が行われるためには、現在のユーザーからログアウトし、再度ログインする必要があります。

解説 (7)

環境変数を一度だけ設定するには、シェルスクリプトではなくプロンプトで 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

解説 (1)

Ubuntuで新しい環境変数を恒久的に追加するには(14.04でのみテスト済み)、以下の手順で行います。

1.ターミナルを開く(CtrlAltT を押す)。 2.2. 「sudo -H gedit /etc/environment」を実行する。 3.パスワードを入力する 4.開いたばかりのテキストファイルを編集します。 例:FOO=barを追加したい場合は、FOO=barと改行してください。 5.5. ファイルを保存する 8.保存したら、一度ログアウトして、再度ログインしてください。 9.必要な変更が行われます。

解説 (5)