システム全体の$ PATH変数はどこに設定されていますか?


10

Ubuntu Desktop 14.04を使用しているため、非ログインシェルを使用しています。GUIターミナルを開くと、最初に非ログインシェルセッションが次の起動ファイルを読み取ります。

/etc/bash.bashrc
~/.bashrc

非ログインシェルは、ログインシェルである親プロセスから環境を継承するため、セッションは次の起動ファイルも読み取ります。

/etc/profile
~/.bash_profile

しかし、私は見つけることができない$PATHシステム全体のパスが好きなため/bin/sbin/usr/bin/usr/sbin、これらのファイルのいずれかに設定します。$PATHこれらのディレクトリのセットはどこにありますか?

回答:


16

(デフォルト)システム全体PATH/etc/environmentファイルに設定されます。

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

基本的には、グローバル環境変数を保存する場所です。


+1、しかし、$PATHそれが親ログインシェルによって継承されているのbashか、それとも各インスタンスによってリロードされているのかを偶然知っていますか?
コスジュン

@kosすべての子プロセス..修正の環境で実行されて当然のない限り、親シェルから環境を継承
heemayl

シェルが$HOME変数を展開していないようです。たとえば$HOME/.composer/vendor/binPATHin に追加しても/etc/environment、このディレクトリのバイナリはパスプレフィックスなしで実行できません。を使用~/.composer/vendor/binしても機能しません。絶対パスを追加する必要があると思います/home/vagrant/.composer/vendor/bin。例:これは、(この動作を説明していませんが)に関連すると思われる:askubuntu.com/questions/402353/...
ベン・ジョンソン

2
@BenJohnsonこれは、/etc/environment(および~/.pam/environment)がpam_envPAMモジュールによって読み取られるためであり、シェルや、シェル/環境変数を理解するその他のものではないためです。~拡張についても同様です。そこで、絶対パスを使用する必要があります。
heemayl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.