すべてのユーザーシェルとGUIアプリケーションが同じPATH環境を取得できるように、OS XのグローバルPATH環境変数に追加したいと思います。
シェルスタートアップスクリプトのパスに追加できることは知っていますが、それらの設定はGUIアプリケーションに継承されません。
これまでに見つけた唯一の方法は、PATH環境変数を/ etc/launchd.confで再定義することです。
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path
launchd.conf
のPATHに実際に追加する方法がわかりませんでした。
私はこの方法について少し心配していますが、これまでのところ、これが機能する唯一のものです。もっと良い方法はありますか?
手のひらのGUI情報 は正しいですが、シェルから見えるパスを変更するためのより保守可能な方法があります。 mediaslave said のように、/etc/paths
を編集できますが、パスが含まれている/etc/paths.d/
にテキストファイルをドロップすると、すべてのシェルがパスを正しく構築します。
たとえば、私のシステムでは:
$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11 git postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin
/etc/launchd.conf
launchd.conf
ファイルは、 OS X v10.8 (Mountain Lion)と v10.9 (Mavericks)、すべてのユーザーのためのGUIおよびコンソールアプリケーションで動作するもの。
Sudo touch /etc/launchd.conf
Sudo nano /etc/launchd.conf
追加
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
上記の例では、PATHのデフォルトの環境値に/usr/local/bin
を追加しました。
このファイルはスクリプトではなく、置換を使用するオプションがないことに注意してください。また、これらを適用するには、再起動する必要があります。
他のすべては部分的なソリューションにすぎないことに注意してください。
environment.plist
は、Spotlight経由で起動したアプリケーションでは機能しません。/etc/paths
-コンソールのみ/etc/csh.cshrc
または/etc/bashrc
-一部のシェルのみこの回答は、Mac OS Xでの環境変数の設定からの同じ質問に基づいています。
シェルごとに設定する必要があります。 Bashとcshのようなシェルは、PATHを調整するための同じ構成ファイルと構文を共有しません。
ログイン時に環境変数が設定されるため、launchctl
でこれを実行しようとしても機能しません。それらは、シェルセッションの外のUnixではシステム全体に存在しません。
追加したいので
setenv PATH "$PATH:/add/my/extra/path"
/etc/csh.cshrc
と
export PATH="$PATH:/more/paths:/
/etc/bashrc
へ。
GUIアプリケーションで環境変数が必要な場合は、さらに複雑です。各ユーザーのホームディレクトリに.MacOSX/environment.plist
ファイルを作成する必要があります。 .MacOSX
ディレクトリはデフォルトでは存在しない可能性が高いため、作成する必要があります。
ファイルの形式は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PRINTER</key>
<string>myprinter</string>
<key>PATH</key>
<string>/path/to/thing/I/need</string>
<key>DISPLAY</key>
<string>0:1</string>
</dict>
</plist>
environment.plist
の詳細 Appleのサイトにあります 。
/etc/paths
に行を1行ずつ追加して、グローバルパスを編集できます。
Sudo nano /etc/paths
が表示されます。
OS Xでのpath_helper
コマンドラインユーティリティのmanページをご覧になりましたか?私は SOでやや関連する質問 に回答しました。
誰かが最も簡単なそしてほとんどエレガントな方法をカバーしたかどうかはわかりません。少なくとも Mac OS X v10.6 (Snow Leopard)。
[/etc/|~/.]
中の[profile|bashrc]
ファイルをいじることはうまくいくかもしれませんが、多少ハックです。 /etc/paths.d/
ディレクトリはその方法です。
*name*
に/etc/paths.d/
という名前の新しいファイルを作成します(すでにそこにある名前を付けないでください)。
/usr/X11/bin
/Developer/usr/bin
それから加えて
eval '/usr/libexec/path_helper -s`
profile
またはbashrc
に変更してください。
/etc/launchd.conf
ではなく/etc/profile
を使用する理由がわかりません。ただし、Mac OS Xの専門家ではありません。きちんと動作すると思いますが、launchd
はinit
のMac OS X実装/置換です-Mac OS Xは私を混乱させます。
とにかく、setenv PATH "$PATH:/more/paths:/and/more/paths"
は機能し(tcsh)、ボーンシェルの同等物はexport PATH="$PATH:/more/paths:/and/more/paths"
です-launchd
が特定のシェルにどのように関連しているかはわかりません。
私はより多くの質問をした後、答えました=)
Launchdがこれを受け入れるかどうかはわかりませんが、以下を試してください。
setenv PATH "$ PATH:/ my/path"