環境変数にどのファイルが設定/追加されるか、優先順位がわかりますか?

環境変数にどのファイルが設定/追加されるか、優先順位がわかりますか?

$PATH私の環境変数(および$MANPATH友達)の一部は、部分的に別のソースファイルに設定されています。

早く収集できるコマンドや方法があればいいと思います。どの部分、特定の環境変数でどんな文書

.bashrcたとえば、私の$ PATHは明らかに、、/etc/paths...に設定(追加)されていますが、/etc/paths.d/X11まだ私の$PATH

環境変数に影響を与えるファイルを手動で見つけるには時間がかかります。すべてのセッターを追跡するために不必要な努力をバイパスするための有用な方法があります...それとも私はそう思いますか?

答え1

通常、PATHシステム依存度の高い方法でログインしたプログラムによって初期値に設定されます(pam_env共通の貢献者)、/etc/profile含まれているファイルは~/.profileその値を変更し続けます。

PATH.bashrc次のものではない環境設定に対する変更を削除します.bashrc。以下を参照してください。.bashrcと.bash_profileの違い

ssh localhostセッションの開始はグラフィカルモードよりはるかに簡単なので、まずテキストモード(例えばを使用して)でログインしてみてください。

set -xandの先頭に入れてください。シェルは、標準エラーストリームで実行された操作のトレースを印刷します。トレースで割り当てを探します。/etc/profile~/.profilePATH

環境変数の割り当てには優先順位の概念はありません。最後に割り当てた人が勝ちます。

答え2

PATHは.bashrcファイルだけでなく、どこでも設定できます。システムにはファイルがある可能性が /etc/profile高く/etc/profile.local、システム内のすべてのユーザーのデフォルトパスを設定します。ユーザー固有の変更や追加がファイルにない場合は、.profileファイルに設定する.bashrcか、システムのデフォルト値を使用できます。

あなたにのみ影響を与える変更を適用するには、.profile次のフォームを使用して入力してください。

export PATH=/new/directory:$PATH

したがって、現在のパスを完全に書き換えるのではなく編集します。

man bashまたはここ.profile.bashrcでは、などの違いと、ログイン時やシェルを起動するときにどのファイルをどの順序で読み取るかを説明します。

答え3

そのようなメカニズムが存在する可能性はほとんどありません。シェルでenv変数の値を変更する方法がどれほど多いかを考えてみましょう。

しかし、運が良いかもしれませんset -x

関連情報