web-dev-qa-db-ja.com

ユーザー環境変数を設定するにはどうすればよいですか? (永続的に、セッションではありません)

これは私を苛立たせています。私はいくつかの提案(すべて異なるファイルと構文を使用)を見ましたが、どれもうまくいきませんでした。

特定のユーザーの環境変数を設定するにはどうすればよいですか?私はdebian squeezeをしています。 ABC = "123"にするためにファイルに入力する必要がある正確な構文は何ですか?

148
user4069

シェルの初期化ファイルに宣言を配置する必要があります。

  • Bash、ash、kshまたはその他のBourneスタイルのシェルを使用している場合は、次を追加できます。

    ABC="123"; export ABC
    

    .profileファイル(${HOME}/.profile)内。これは、ほとんどのUnixインストール、特にDebianのデフォルトの状況です。

    ログインシェルがbashの場合は、代わりに.bash_profile${HOME}/.bash_profile)または.bash_loginを使用できます。

    注:これらのファイルのいずれかが存在し、ログインシェルがbashの場合、ssh経由またはテキストコンソールでログインすると.profileは読み取られませんが、代わりに読み取られる可能性があります.bash_profile GUIからログインした場合。また、.bash_profileがない場合は、.bashrcを使用します。

  • ログインシェルとしてzshを設定している場合は、~/.zprofileではなく~/.profileを使用してください。

  • Tcshを使用している場合は、

    setenv ABC "123"
    

    .loginファイル(${HOME}/.login

  • 別のシェルを使用している場合は、シェルのマニュアルで環境変数の定義方法とシェルの起動時に実行されるファイルを確認してください。

118
Matteo

環境変数を設定するには、/etc/environmentファイルを使用します。次に、/etc/environmentファイル内に次の行を追加します。

ABC="123"

これで[〜#〜] abc [〜#〜]変数にすべてのユーザーセッションからアクセスできるようになります。変数の出力をテストするには、まずコマンドを使用して環境変数を更新します

source /etc/environment

echo $ABCを実行します。

49
Hokam

これは、ほとんどすべてのシェルで使用できる一般的な手順です。いずれの場合も、ユーザーが通常どのシェルでログインするかを知る必要があります。

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
Shell="$(basename -- "$path")"

次に、このシェルが通常読み取るドットファイルを把握する必要があります。

man $Shell

うまくいくかもしれないショートカットは、シェル名を含むそれらのドットファイルをリストすることです:

ls ~/.*${Shell}*

ログイン中にファイルの1つが実際に読み取られたかどうかを確認する場合は、次のように、それぞれにファイル名を出力するだけです。

echo .bashrc

ログインすると、どのファイルが読み取られているかがわかり、変更するファイルを決定できます。 echo "$0"の値はシェルがドットファイルを処理する方法に依存し、誤解を招く可能性があるため、$0または類似のものを使用しないでください。

変数を「永続的に」宣言する場合、これはセッションにのみ拡張されることに注意してください。セッションなしで変数の値にアクセスする方法はないため、セッション外では意味がありません。 「読み取り専用」を意味する場合、これはシェルに依存し、Bashでは次のように使用できます。

declare -r VAR

すでに値がある場合、または

declare -r VAR=value

同時に割り当てます。すべてのシェルにこの機能があるわけではありません。

ほとんどのシェルで変数を宣言するには、変数名([A-Za-z_][A-Za-z0-9_]*)を使用し、その後に等号(およびスペースなしを続けます)等号)、次に値(値が単純な[A-Za-z0-9_]+でない限り、引用符で囲むことが望ましい)。例えば:

name="John Doe"
ip=127.0.0.1
HORRIBLE=1
9
l0b0

エクスポートを使用します。

export ABC="123"

設定されているかどうかを確認するには、

env

および/または

env | grep ABC

恒久的に追加するには、これを~/.bashrcファイルに追加します。

export ABC="123"
5
whoami

正確なコマンドは次のとおりです。

echo 'export ABC = "123"' >> ~/.profile

私にとってうまくいった最善の方法は、BASHシェルで.bashrcファイルを変更することです。

たとえば、これを使用します。

  1. .bashrcファイルを開く
  2. この行を追加します。

    export <VARIABLE> = "<ANY PATH/VALUE you want>"
    

    例:export HOME = "/home/user/"

    ""の使用は機能せず、bashrcファイルはソース中にエラーを報告するため、' 'を使用することを忘れないでください。

  3. 現在のセッションでそれを調達します。

/ etc/environmentファイルも変更しようとしましたが、新しい環境変数を作成できませんでした。ソースを指定すると、定義された変数が見つからないというエラーが表示されました。

1
Ayushi Agarwal