
/etc/environments ファイルにパスを追加しましたが、次のようになります。
mindaugas@Kali:~$ cat /etc/environment | tr ":" "\n"
PATH="/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/sbin"
ログアウトして再度ログインします。しかし、私は$PATH
変わりません。
mindaugas@Kali:~$ echo $PATH | tr ":" "\n"
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
Ubuntu 14.04の変更で同じ手順を実行します$PATH
。
疑問に思う - なぜですか?
答え1
Linuxでは/etc/environment
通常、読み込みが行われます。
pam_env.soログイン中のモジュール。モジュールが最小システムにインストールされていないか、/ etcファイルを読み取らないように構成されているか、ログインプロセス中に呼び出されるように/ etc / pam.d / *に構成されていない可能性があります。望むよりman pam_env pam
。
答え2
ほとんどのシェルにはエンコーディングをロードする義務はありません/etc/environment
。
シェルが探す正確なファイルとそのファイルをロードしようとする順序は、使用する実際のシェルによって異なりますが、一般的に信頼できる唯一のファイルは/etc/shellnamerc
。~/.shellnamerc
詳しくは、お好みのシェルのマンページをご覧ください。
特定のUbuntuの場合、優先シェルは構成ファイルおよび/etc/
/または作成時にアカウントに提供された構成ファイルをロードし、これらの構成ファイルの1つは、その内容が存在する場合は検索して/etc/skel/
ロードするように指示します。/etc/environment
はい、場合によっては便利な機能ですが、普遍的ではありません...そして率直に言ってできないこれは、シェルごとに環境変数を設定する方法が異なる可能性があるためです。たとえば、/etc/environment
Bourne型シェル(bash
、、、sh
)のaはdash
Cシェル(csh
、)には適用されません。tcsh
長い話を短く:/etc/environment
一般的ですが、普遍的な選択機能ではありません。カリーが足りないのは間違いではありません。