PATH
がいくつかの場所で読んだことがあります /etc/profile
で設定されます または.profile
ホームディレクトリにあるファイル。
パスが設定されているのはこれらだけですか?それをもっとよく理解したい。
/etc/profile
内 次のコメントが"system-wide .profile file for the Bourne shell"
と言っているように、ファイル 。それは、プロファイルファイルがbashの主要な構成ファイルであることを意味しますか?
そのファイルには、PATH
が表示されません。 varが設定されています。 .profile
内 ホームディレクトリのファイルには次の行があります:
PATH="$HOME/bin:$PATH"
PATH
がリセットされます すでに設定されている$PATH
を連結しているため、見た目では $HOME/bin:
の文字列 右?ただし、etc/profile
の場合 および~/.profile
PATH
を設定する唯一のファイルです $PATH
はどこですか /etc/profile
で定義されていない場合は、そのコード行から取得します ?
経験豊富な人は、PATH
について幅広く詳細に説明してください。 変数?ありがとう!
承認された回答:
PATH
がある場所はたくさんあります 設定できます。
login
プログラムはそれをデフォルト値に設定します。このデフォルト値の構成方法は、システムによって異なります。ほとんどの組み込みLinuxシステムでは、/etc/login.defs
から取得されます 、rootと他のユーザーの値が異なります。 login(1)
を参照してください それが何をするかを知るためにあなたのシステムのマニュアル。
PAMを使用するシステム、特にpam_env
モジュール、環境変数は、システム全体のファイル/etc/environment
で設定できます。 およびユーザーごとのファイル~/.pam_environment
。
次に、ログインするほとんどの方法(cronジョブは除く)は、システム全体およびユーザーごとの構成ファイルを読み取るログインシェルを実行します。これらのファイルは、PATH
の値を変更できます 、通常はエントリを追加しますが、他の方法で追加することもあります。どのファイルが読み取られるかは、ログインシェルが何であるかによって異なります。 Bourne/POSIXスタイルのシェルは/etc/profile
を読み取ります および~/.profile
。 Bashは/etc/profile
を読み取ります 、ただし、ユーザーごとのファイルの場合、~/.bash_profile
の中の最初の既存のファイルのみを読み取ります。 、~/.bash_login
および~/.profile
。 Zshは/etc/zshenv
を読み取ります 、~/.zshenv
、/etc/zprofile
、~/.zprofile
、/etc/zlogin
および~/.zlogin
。多くのGUIセッションは、/etc/profile
をロードするように調整します および~/.profile
、ただし、これは、ディスプレイマネージャ、デスクトップ環境またはその他のセッション起動スクリプト、および各ディストリビューションがこれらをどのように設定したかによって異なります。