Mavericksでシステム全体のPATH環境変数を設定する


41

以前のOSバージョンでは、システム全体のPATH環境変数を設定して、/etc/launchd.conf(コマンドラインだけでなく)すべてのアプリで使用できるようにすることができました。

マーベリックスでは、これはもう使用されていないようです。

マーベリックでこれを行う別のテクニックはありますか?

回答:


51

ヨセミテ

/etc/launchd.conf10.10ではサポートされなくなりました。参照man launchctl

/etc/launchd.confファイルは、初期の起動時に実行するサブコマンドについてはもう調べられません。この機能は、セキュリティを考慮して削除されました。

たとえば、このplistを~/Library/LaunchAgents/my.startup.plist次の名前で保存できます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

このlaunchctl setenvコマンドはユーザーとして実行されるため、ユーザードメインで起動されたプロセスにのみ適用されます。

このメソッドは、「ログイン時にウィンドウを再度開く」がチェックされている場合、ログイン時に再度開くアプリケーションには適用されません。

マーベリックス以前

10.9以前では、たとえば次を実行できます。

echo setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin|sudo tee -a /etc/launchd.conf

その後、再起動して変更を適用します。

その他の方法

/etc/pathsそして/etc/paths.d/シェルにのみ(または主に)適用されます。ライン/etc/pathsとは、/etc/paths.d/*によってパスに追加されpath_helperから実行され、/etc/profile/etc/zshenv、および/etc/csh.login/etc/pathsまたはを検討するシェル以外のプログラムは知りません/etc/paths.d/

~/.MacOSX/environment.plist 10.8で動作を停止しました。


2
うん; それだけで、デフォルトでは存在するが、それを作成し、適切なエントリを設定することができますされません
mgol

Yosemiteでは、/ etc / launchd.confで設定したPYTHONPATHを認識していないプログラムがいくつかあり、コマンドラインの修正(回答の2番目の段落)を使用したため、動作しないようです。 、launchctlエラー/ヘルプメッセージが表示されるだけです。
タンゴ14年

@Tango答えを編集しました。/etc/launchd.conf10.10で削除されました。
Lri 14年

私の経験では、bashで遊んでいる間、10.10では、launchctl setenvは何もしないようです。env変数を設定しようとしましたが、エコーで値を確認しましたが、未定義のままでした。
タンゴ14年

1
@Tangoを実行しlaunchctl setenvた後、ターミナルアプリケーションを終了して開き直します。launchctl setenv既存のプロセスに影響を与えたことはありません。
Lri 14年

11

もっと簡単な方法があります。フォルダーにテキストファイルを配置します/etc/paths.d/。このテキストファイルに、目的のパスと改行を入力します。最良の方法は、パスごとに新しいファイルを作成することです。

私のシステムには、テキスト「/ usr / local / mysql / bin」と改行を含むMySQLというファイルがあります。


@LauriRantaが説明する弱点に対処する方法があるかどうかについて、新しい質問を投稿しました。
kuzzooroo 14

単なる逸話:私はこの方法も使用しました。これは推奨される「OS Xの方法」だからです。システムが/etc/paths.dにあるPATHファイルを一貫して尊重し、通常はエクスポートシェルコマンドを使用するか、または常に機能する〜/ .bash_profileにPATHを配置するという運がありませんでした。システム全体ではなく、現在のユーザーアカウントの場合のみ。/etc/paths.dのPATHファイルが常に機能する場合、システムの動作が私のシステムよりも優れていることにjeします;)
chillin

これは私にとって新しいものです。いいね!
いとこコカイン14年

3

ファイルに環境変数を設定できる場合があります/etc/launchd-user.conf...

Mavericksでは、次の行を使用してファイル内の環境変数を構成できました。

setenv TEST test

新規ブート後、$TEST/ etc / launchd-user.confから設定されます。

編集

/etc/launchd.confにあるファイルの構文が無効である可能性があります。そのファイルの内容を調査のために投稿できますか?

私が見ていることから、/etc/launchd.confのPATH変数の設定は正常に機能しています。ただし、パラメーターの展開launchdは実行されません。したがって、のようなエントリがある場合、結果のパスは「」に設定されます(注:PATH の値ではなく、テキスト「$ PATH」)setenv PATH $PATH:/usr/local/bin$PATH:/usr/local/bin


おかげで、私が抱えている問題はPATHの設定で、他の環境変数が機能しているようです。
トム

@Tom-上記の追加の提案を提供しました
エディケリー

1
それは本当にlaunch-user.confまたは
launch-

「setenv TEST test」を含む/etc/launchd.confは、Mavericksのターミナルに伝播しません。
デイブX

エラー:s / Mavericks / Yosemite /。
デイブX

0

私のMavericksのインストールで、「setenv PATH blablabla」を/etc/launchd.confに追加しても再起動後に機能しませんでした

そこで、新しいパスを/ etc / pathsの最後に追加しましたが、うまくいきました。


私にはうまくいきませんでした。再起動し、/etc/paths必要なものがすべて含まれているにもかかわらず、Sublimeには元のPATHしか表示されません。ターミナルから実行すると動作します。
mgol

/etc/launchd.confによって設定されたかもしれない任意のPATH上書きするために私は/ etc / profileの用途に/ etc /パスと/etc/paths.dでpath_helperコマンド
デイブX

0

setenv PATHは、ターミナルとアプリケーションで引き続き機能しますが、シェルスクリプトで破損し、Finderからクリックまたはターミナルで開くで直接起動します。とても奇妙です。/etc/launchd.conf作業中に設定されるその他の環境変数。

直接起動されたシェルスクリプトを修正するために、でPATH設定を複製しました~/.bash_profile


0

編集/etc/paths.dまたは使用して.bash_profile他の誰かからの提案が通り、私のために働いていなかった(私は実際にupvote彼の答えのためにここに来たが、私は?!再びそれを見つけることができませんでした)、私が編集した/etc/paths私のために働きます

私の場合、android-tool adbandroidターミナルコマンドにsdkパスを指すように追加しました(adb最近は別のディレクトリに移動しました)

/usr/local/bin
...
/Applications/adt-bundle-mac/sdk/platform-tools  //new entries
/Applications/adt-bundle-mac/sdk/tools

0

SWEET、そのXMLを〜/ Library / LaunchAgents / setenv.SVN.plistに追加すると、BBEditは/ optにインストールしたsubversionバイナリを使用できました。

<clip>
<string>launchctl setenv PATH /opt/subversion/bin:$PATH</string>
<clip>

1
このファイルがパラメータ展開をサポートしているかどうかを判断する方法はありますか?/ optのパスのみがパスになるようにパスを設定した可能性があります。そして、$ PATHの使用をサポートしていない可能性が高いと考えています。最初に既存のパスをどのように決定しますか?
マークM

-1

「bin」(追加するパス)パスを/ etc / pathsファイルに追加するだけです-再起動または再ログイン!!!

sudo vi /etc/paths 
(create a file (paths file) if it does't exist, I am using 'vi' editor, you can use your own as super user )
then, add your bin directory path like below 

/usr/local/mysql/bin
/usr/local/apache-ant-1.9.3/bin
/usr/local/gradle-1.11/bin

ファイルを保存して再ログインします...これが役立つことを願っています

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