/etc/environment で変数拡張は行われません。

/etc/environment で変数拡張は行われません。

/etc/environment変数にさらにディレクトリを追加するように変更しましたPATH。ただし、二重引用符で囲まれた内容は拡張されていないように見え、$PATHシェル内のどのコマンドでも検索して/usr/bin/command-not-found実行できます。

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
PATH="$PATH:/home/user/technical/java/maven/bin"
JAVA_HOME="/home/user/technical/java/jdk7"

だからttyでは、

$ echo $PATH
$PATH:/home/user/technical/java/maven/bin

なぜ拡張が行われなかったのですか?

答え1

/etc/environment はシェルとは何の関係もありません。これは、bashなどの手段には依存しないことを意味します。拡張

key=valueここでは単純な割り当てのみを使用できます。

答え2

この/etc/environmentファイルのソースはLinux-PAMプロジェクトそしてこれはシェルスクリプトではありません。シェルまたはPAMはどちらもこのファイルに対して変数拡張を実行しないため、変数値はファイルに書き込まれると割り当てられます。

/etc/environment書類録音済みプロジェクト別:

この/etc/environmentファイルは、設定する環境変数を指定します。ファイルはNAME=VALUE別の行にある単純なペアで構成する必要があります。モジュールはpam_env(8)ファイルの後にファイルを読み込みますpam_env.conf

この/etc/security/pam_env.confファイルはシェルスクリプトではありませんが、する他の変数を参照するための構文をサポートしています${variable}。また、2つの特別な式をサポートし、@{HOME}それをユーザーアイテムから読み取った適切な値に置き換え@{SHELL}ます。passwd

このファイルで変数を定義する構文は、シェルスクリプトの構文とは異なります。

VARIABLE [DEFAULT=[value]] [OVERRIDE=[value]]

詳細については、上記のリンクを参照してください。

関連情報