環境変数に設定/追加しているファイル、およびそれらの優先順位を見つけることは可能ですか?


9

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

特定の環境変数のどの部分どのファイルからのものかをすばやく収集するためのコマンドまたはメソッドが欲しいと思っています

私の$ PATHには、例えば、明らかで(に加算)が設定されている.bashrc/etc/paths/etc/paths.d/X11...と私はまだ余分に私の中に重複したパス定義を作成した最後の神秘的なファイルを探しています$PATH

環境変数の原因となっているファイルを手動で特定するには、しばらく時間がかかります。すべてのセッターを追跡するというこの不必要な労力を回避するための便利な方法がなければならないのでしょうか…それとも、これらの線に沿って考えているのは私だけですか?

回答:


6

通常PATH、ログインするプログラム(pam_env一般的な寄稿者)によってシステムに大きく依存する方法で初期値に設定されます。その後/etc/profile~/.profileandおよびそれらに含まれるファイルは、その値を変更します。

変更と削除PATHでは.bashrc、環境設定では属していない.bashrc:参照の.bashrcと.bash_profileの違いを

ssh localhostセッションの起動はグラフィックモードよりもはるかに簡単なので、まずテキストモードでログインしてみてください(例:)。

入れset -xの初めに/etc/profile~/.profile。シェルは、標準エラーストリームに何をするかのトレースを出力します。PATHトレースで割り当てを探します。

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


6

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

自分だけに影響する変更を加えたい場合は.profile、次のフォームを使用して変更を加えます。

export PATH=/new/directory:$PATH

これにより、現在のパスを完全に書き換えるのではなく編集します。

の「INVOCATION」セクションman bash(またはここ)では、との違い.profileなど.bashrc、ログインまたはシェルの起動時に読み取られる他のファイルとその順序について説明しています。


1

このメカニズムが存在することはほとんどありません。シェルでenv変数の値を変更する方法がいくつあるか考えてみてください。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.