web-dev-qa-db-ja.com

OS XでグローバルPATH環境変数を設定するにはどうすればよいですか?

すべてのユーザーシェルとGUIアプリケーションが同じPATH環境を取得できるように、OS XのグローバルPATH環境変数に追加したいと思います。

シェルスタートアップスクリプトのパスに追加できることは知っていますが、それらの設定はGUIアプリケーションに継承されません。

これまでに見つけた唯一の方法は、PATH環境変数を/ etc/launchd.confで再定義することです。

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

launchd.confのPATHに実際に追加する方法がわかりませんでした。

私はこの方法について少し心配していますが、これまでのところ、これが機能する唯一のものです。もっと良い方法はありますか?

102
lajos

手のひらの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
72
cogg

/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での環境変数の設定からの同じ質問に基づいています。

48
sorin

シェルごとに設定する必要があります。 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のサイトにあります

7
palmer

/etc/pathsに行を1行ずつ追加して、グローバルパスを編集できます。

Sudo nano /etc/pathsが表示されます。

3
manumoomoo

OS Xでのpath_helperコマンドラインユーティリティのmanページをご覧になりましたか?私は SOでやや関連する質問 に回答しました。

1
ayaz

誰かが最も簡単なそしてほとんどエレガントな方法をカバーしたかどうかはわかりません。少なくとも Mac OS X v10.6 (Snow Leopard)。

[/etc/|~/.]中の[profile|bashrc]ファイルをいじることはうまくいくかもしれませんが、多少ハックです。 /etc/paths.d/ディレクトリはその方法です。

  • お気に入りのエディターにSudoを実行します。
  • *name*/etc/paths.d/という名前の新しいファイルを作成します(すでにそこにある名前を付けないでください)。

    /usr/X11/bin
    /Developer/usr/bin
    
  • それから加えて

    eval '/usr/libexec/path_helper -s`
    

    profileまたはbashrcに変更してください。

1
noboomu

/etc/launchd.confではなく/etc/profileを使用する理由がわかりません。ただし、Mac OS Xの専門家ではありません。きちんと動作すると思いますが、launchdinitのMac OS X実装/置換です-Mac OS Xは私を混乱させます。

とにかく、setenv PATH "$PATH:/more/paths:/and/more/paths"は機能し(tcsh)、ボーンシェルの同等物はexport PATH="$PATH:/more/paths:/and/more/paths"です-launchdが特定のシェルにどのように関連しているかはわかりません。

私はより多くの質問をした後、答えました=)

0
Xerxes

Launchdがこれを受け入れるかどうかはわかりませんが、以下を試してください。

setenv PATH "$ PATH:/ my/path"
0
user1686