OS X 10.6 Snow Leopardの$ PATHはどこに設定されますか?


139

echo $PATHはコマンドラインで入力して取得します

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

私の.bash_loginファイルが空なので、これがどこに設定されているのだろうと思っています。

特に心配しているのは、MacPortsをインストールした後、大量のジャンクをインストールしたこと/optです。そのディレクトリは、通常のMac OS Xインストールにも存在するとは思わない。

更新:私の声明を訂正してくれたjtimbermanに感謝echo $PATH


5
SMcCandlishからのコメント:easiest solution when you want to make a site-wide path change (e.g. to include /usr/libexec or whatever) is to edit /etc/paths . While the new /etc/paths.d/ thing is functional, it's actually more hassle than maintaining a single file. As others have hinted but not spelled out, if the path changes you want would be useful only for one user, it's best to make that change in the bash and/or tcsh config files in that user's home directory instead of system-wide.
サティアジスバート

@Sathya、私に/etc/paths.dはインストールスクリプトに役立つようです。インストールスクリプトでインストールしたプログラムをパスに追加する場合は、ファイルをにドロップできます/etc/paths.d。パスを手動で編集する場合/etc/pathsは、より良いオプションです。
ヘイデンミュール

私は主にこのポストに基づいてスクリプトを作ってきた、それはすぐにPATHがこれらの複数の場所に沿って定義されている場所を表示します:gist.github.com/lopespm/6407349952bc8a1ff8fb
ペドロ・ロペス

回答:


161

ときにbash起動するには、次のファイルあなたは、ログインするたびに読み込みます。OS Xの目的上、これは新しいTerminalウィンドウを開くたびに意味します。

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

bashコマンドラインに入力して新しいシェルを起動すると、次のようになります。.bashrc

OS Xは~/.MacOSX/environment.plist、必要に応じてパスを含む、より多くの環境変数の設定にも使用します。

最後に、/etc/pathsそして/etc/paths.dあまりにもシェルによって読み込まれます。


/opt/local/binなどは~/.tcshrcMacPortsによって追加されます。また、必ず確認してください~/.cshrc


5
どうやら、~/.MacOSX/environment.plist一部の人々のために動作しません。ではOS Xのためのパスの変更 ]フォルダを使用して代替が/etc/paths.d記述されています。私はそれをテストしていません。
アルジャン

+1 ~/.cshrc。なぜ機能し~/.profileなかったのかを理解しようとしてナットに行きました。
トムロジック

この答えは不完全だと思います。間違った(存在しない)パス:/ usr / bin / local、私のシェルが不満を言っている場所を見つけようとしていますが、それらはどのファイルにもありません。
トミー

.bashrc入力したbashかどうかに関係なく読まれると思います。
シャオペン-ZenUML.com

48

ファイルを見てみましょう/etc/pathsによって使用されている、/usr/libexec/path_helperで使用され、/etc/profile

MacPortsの場合sudo /etc/paths/opt/local/bin、ターミナルウィンドウを使用して再度開きます。


25

真剣に、Leopardはパスを追加する新しい方法を提供してくれました。追加するパス部分を含むファイルを作成し、/ etc / paths.dに配置するだけです。

1ステップでこれを行う簡単な例は次のとおりです。

echo "/some/path/to/add" >> /etc/paths.d/somefilename

それ以外の場合は、/ etc / paths.dに移動して、ファイルを直接そこに置くことができます。いずれにしても、そのディレクトリ内のファイル内のパス部分は、デフォルトのパスに追加されます。

これはマンパスでも機能します。

詳細へのリンクは次のとおりです。

ARSテクニカ:Snow LeopardのPATHに何かを追加するにはどうすればよいですか?

2番目のメモ:MacPortsは、Appleのものでは使用されないため、すべてをoptディレクトリに入れます。そうすれば、競合することはありません。彼らのガイド(よく書かれている、BTW)には、optを使用する理由と、必要に応じてそのデフォルトを変更する方法が説明されています。

MacPortsガイド


とてもかっこいい。今、私たちは、もはや私たちのプロファイルファイルを汚染しないように、これらのパスに依存するアプリケーションを取得する必要があります...
ダニエル・ベック

大好きです。シンプル!
アンドリューヘッジス

SMcCandlishからのコメント:I have to concur that there's nothing weird or bad about MacPorts using /opt (likewise Fink uses /sw); trying to replace stock Mac BSD parts with bleeding-edge builds from external projects like these is a recipe for an unusable system that requires an OS reinstallation.
サティアジスバート

単一行、ファイルへの追加なし、簡単な削除。これが大好き。おかげでリーン
イブラヒム・ローラル

4

パスを表示するには、$ PATHをエコーし​​ます。

echo $PATH

パスを設定するには~/.bash_profile、ではなく、編集します~/.bash_login


3

sshによって決定されるパスもあります

と比較echo $PATHしてくださいssh localhost 'echo $PATH'。sshは/ etc / profileを読み取らないため、/ usr / libexec / path_helperは実行されず、したがって/ etc / pathsはスキップされます。今すぐ試してくださいssh localhost 'source /etc/profile; echo $PATH'。パスを近づける必要があります。残りの違いは、.bash_profile(sshによってもスキップされます)と.bashrc(sshによって読み取られます)のパス変更が原因である可能性があります。

sshパスを通常のターミナルパスと同様にしたい場合はsource /etc/profile、.bashrcに追加できます。


ヒントをありがとう!私は正確にsshで解決策を探していました。svnserveへのパスが.profileにあるが、.bashrcにないため、svn + sshはsvnserveコマンドを見つけることができませんでした。
KIR

2

次のいずれかで定義できます。

  • システム変数- /etc/paths
  • ユーザー変数-@Steve Follyの説明を参照

1

実際には、.profileファイルの代わりにファイルに保存され、.bash_loginMacPortsは.bash_loginファイルの代わりにこれを使用するのが一般的です。

また、/optディレクトリは通常MacPortsによって作成され、このフォルダーにファイルを保存します。


1

ドキュメントのため/usr/libexec/path_helperのユーティリティは、$ PATHの初期の部品から取られた/etc/pathsとデフォルトでのように見えます

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

OS-X Snow Leopard用

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