OS XでPATHなどの環境変数を変更する適切な方法は何ですか?
私はGoogleを少し調べて、編集する3つの異なるファイルを見つけました。
- / etc / paths
- 〜/ .profile
- 〜/ .tcshrc
OS Xはbashを使用しているので、これらのファイルの一部もありません。.tcshrcが間違っていることは確かです。これらの変数、特にPATHはどこで定義されていますか?
OS X v10.5(Leopard)を実行しています。
OS XでPATHなどの環境変数を変更する適切な方法は何ですか?
私はGoogleを少し調べて、編集する3つの異なるファイルを見つけました。
OS Xはbashを使用しているので、これらのファイルの一部もありません。.tcshrcが間違っていることは確かです。これらの変数、特にPATHはどこで定義されていますか?
OS X v10.5(Leopard)を実行しています。
回答:
ブルーノは順調です。私は広範囲にわたる調査を行ったので、すべてのGUIアプリケーションで使用可能な変数を設定したい場合、唯一のオプションは/etc/launchd.conf
です。
Spotlight経由で起動したアプリケーションでは、environment.plistは機能しないことに注意してください。これはスティーブセクストンによってここに文書化されています。
端末プロンプトを開く
タイプsudo vi /etc/launchd.conf
(注:このファイルはまだ存在していない可能性があります)
次のような内容をファイルに入れます
# Set environment variables here so they are available globally to all apps
# (and Terminal), including those launched via Spotlight.
#
# After editing this file run the following command from the terminal to update
# environment variables globally without needing to reboot.
# NOTE: You will still need to restart the relevant application (including
# Terminal) to pick up the changes!
# grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
#
# See http://www.digitaledgesw.com/node/31
# and http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x/
#
# Note that you must hardcode the paths below, don't use environment variables.
# You also need to surround multiple values in quotes, see MAVEN_OPTS example below.
#
setenv JAVA_VERSION 1.6
setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
setenv GROOVY_HOME /Applications/Dev/groovy
setenv GRAILS_HOME /Applications/Dev/grails
setenv NEXUS_HOME /Applications/Dev/nexus/nexus-webapp
setenv JRUBY_HOME /Applications/Dev/jruby
setenv ANT_HOME /Applications/Dev/apache-ant
setenv ANT_OPTS -Xmx512M
setenv MAVEN_OPTS "-Xmx1024M -XX:MaxPermSize=512m"
setenv M2_HOME /Applications/Dev/apache-maven
setenv JMETER_HOME /Applications/Dev/jakarta-jmeter
viで変更を保存し、Macを再起動します。または、上記のコードコメントに示されているgrep
/ xargs
コマンドを使用します。
ターミナルウィンドウを開いて入力し、変数が機能していることを証明するexport
と、新しい変数が表示されます。これらは、Spotlight経由で起動するIntelliJ IDEAおよびその他のGUIアプリケーションでも使用できます。
launchd.conf
は1つの方法ですが、(launchdを再起動するために)再起動が必要です。再起動を避けたい場合は、私の回答を参照してください。stackoverflow.com/ questions / 135688
launchd(および拡張すると、Spotlightから開始されるものすべて)が使用する環境をで設定できlaunchctl setenv
ます。たとえば、パスを設定するには:
launchctl setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
または、パスをに設定する場合は.bashrc
、launchdにミラーリングします。
PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchctl setenv PATH $PATH
再起動する必要はありません、あなたはそれが変更された環境をピックアップしたい場合はアプリを再起動する必要がありますけれどもが。
これには、すでにTerminal.appで実行されているすべてのシェルが含まれますが、そこにいる場合は、環境をより直接設定できます。 export PATH=/opt/local/bin:/opt/local/sbin:$PATH
、bashやzshなどを使用て。
再起動後に変更を保持するには/etc/launchd.conf
、次のようにから環境変数を設定できます。
setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchd.conf
再起動すると自動的に実行されます。
これらの変更を今すぐ有効にする場合は、このコマンドを使用して再処理する必要がありますlaunchctl.conf
(@mklementに感謝します!)
egrep -v '^\s*#' /etc/launchd.conf | launchctl
コマンドでlaunchctl
どのようにロードさlaunchd.conf
れるかについての詳細を知ることができますman launchctl
。
environment.plist
ます。また、Spotlightから開始されたプログラムの環境を変更しますが、変更しません。
etc/launchd.conf
再起動前に変更を適用する正しい方法は、@ MatthewMcCulloughの答えのアプローチを使用することですegrep "^setenv\ " /etc/launchd.conf | xargs -t -L 1 launchctl
。
含むまでとOS X v10.7用(ライオン)あなたがそれらを設定することができます。
~/.MacOSX/environment.plist
見る:
ターミナルのPATHについては、.bash_profile
またはで設定できるはず.profile
です(ただし、作成する必要があります)。
以下のためのOS X v10.8の(マウンテンライオン)以降 使用する必要があるlaunchd
とlaunchctl
。
preferences.plist
、OS X 10.5ではpreferences.plist
、スポットライトを介して起動されたアプリケーションについてはまだ読まれていなかったため、使用は理想的ではありませんでした。 /002113.html。OS X 10.6の場合、正常にenvironment.plist
機能します。
~/.bash_profile
次のスニペットのように、環境変数の定義があると仮定します。
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
export GOPATH="$HOME/go"
export PATH="$PATH:/usr/local/opt/go/libexec/bin:$GOPATH/bin"
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
Launch Agentが必要です各ログインで実行され、いつでもオンデマンドでこれらの変数をユーザーセッションにロードがです。これらの定義を解析し、エージェントによって実行される必要なコマンドを構築するためのシェルスクリプトも必要です。
次の内容で、plist
サフィックス(例:という名前osx-env-sync.plist
)が付いたファイルをディレクトリに作成します~/Library/LaunchAgents/
。
<?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>osx-env-sync</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-l</string>
<string>-c</string>
<string>
$HOME/.osx-env-sync.sh
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
-l
パラメータはここで重要です。ログインシェルでシェルスクリプトを実行するために必要ですので、~/.bash_profile
このスクリプトが実行される前にそもそもソースが読み込まれます。
さて、シェルスクリプト。~/.osx-env-sync.sh
次の内容で作成します。
grep export $HOME/.bash_profile | while IFS=' =' read ignoreexport envvar ignorevalue; do
launchctl setenv ${envvar} ${!envvar}
done
シェルスクリプトが実行可能であることを確認します。
chmod +x ~/.osx-env-sync.sh
次に、現在のセッションの起動エージェントをロードします。
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
(再)GUIアプリケーションを起動し、環境変数を読み取れることを確認します。
設定は永続的です。再起動や再ログイン後も存続します。
初期設定(先ほど行った設定)の後、変更を~/.bash_profile
環境全体に再度反映したい場合は、launchctl load ...
コマンドを再実行しても期待どおりに動作しません。代わりに、次のような警告が表示されます。
<$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress
ログアウト/ログインプロセスを実行せずに環境変数をリロードするには、次のようにします。
launchctl unload ~/Library/LaunchAgents/osx-env-sync.plist
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
最後に、すでに実行中のアプリケーション(Terminal.appを含む)を再起動して、変更を認識させます。
また、ここでコードと説明をGitHubプロジェクトにプッシュしました:osx-env-sync。
これが、少なくとも最新バージョンのOS X(Yosemite&El Capitan)にとって、究極のソリューションになることを願っています。
OS Xで環境変数を扱う場合、本質的に2つの解決すべき問題があります。1つ目はSpotlight(Macメニュー/ステータスバーの右側にある虫眼鏡アイコン)からプログラムを呼び出すとき、もう1つはDockからプログラムを呼び出すときです。 。それは(標準シェルの場所から環境を読み込むため、ターミナルアプリケーション/ユーティリティからプログラムを起動することは簡単です~/.profile
、~/.bash_profile
、~/.bashrc
、等)
Dockからプログラムを呼び出すとき~/.MacOSX/environment.plist
は、<dict>
要素に次のシーケンスが含まれている
場所を使用します<key>KEY</key><string>theValue</string>
要素ます。
Spotlightからプログラムを呼び出す場合は、launchdが必要なすべてのキー/値設定でセットアップされていることを確認してください。
両方の問題を同時に解決するために、ユーザーアカウントのログイン項目(システム設定ツールで設定)を使用します。ログイン項目は、Emacs lisp関数を呼び出すbashスクリプトですが、お気に入りのスクリプトツールを使用して同じことを行うこともできます。このアプローチには、いつでも機能し、再起動を必要としないという追加の利点があります。つまり~/.profile
、一部のシェルで編集、ログイン項目を実行し、DockまたはSpotlightから新しく呼び出されたプログラムに対して変更を表示できます。
詳細:
ログインアイテム: ~/bin/macosx-startup
#!/bin/bash
bash -l -c "/Applications/Emacs.app/Contents/MacOS/Emacs --batch -l ~/lib/emacs/elisp/macosx/environment-support.el -f generate-environment"
Emacs lisp関数: ~/lib/emacs/elisp/macosx/envionment-support.el
;;; Provide support for the environment on Mac OS X
(defun generate-environment ()
"Dump the current environment into the ~/.MacOSX/environment.plist file."
;; The system environment is found in the global variable:
;; 'initial-environment' as a list of "KEY=VALUE" pairs.
(let ((list initial-environment)
pair start command key value)
;; clear out the current environment settings
(find-file "~/.MacOSX/environment.plist")
(goto-char (point-min))
(setq start (search-forward "<dict>\n"))
(search-forward "</dict>")
(beginning-of-line)
(delete-region start (point))
(while list
(setq pair (split-string (car list) "=")
list (cdr list))
(setq key (nth 0 pair)
value (nth 1 pair))
(insert " <key>" key "</key>\n")
(insert " <string>" value "</string>\n")
;; Enable this variable in launchd
(setq command (format "launchctl setenv %s \"%s\"" key value))
(shell-command command))
;; Save the buffer.
(save-buffer)))
注:このソリューションは、私が追加する前に来るもの、特にマットカーティスによって提供されるものの融合ですが、~/.bash_profile
コンテンツプラットフォームを独立させ、launchd
環境(Macのみの機能)の設定を別のスクリプトに入れることを意図的に試みました。
別の無料のオープンソースMac OS X v10.8(Mountain Lion)設定ペイン/environment.plistソリューションはEnvPaneです。
GitHubで入手可能なEnvPaneのソースコード。それはに匹敵する機能を持っているようEnvPaneのルックスはRCEnvironmentを、しかし、すなわち、それは即座にその保存された変数を更新することができそうですなし歓迎され、再起動やログインの必要性。
開発者が述べたように:
EnvPaneはMac OS X 10.8(Mountain Lion)の環境設定ペインで、グラフィカルセッションとターミナルセッションの両方ですべてのプログラムの環境変数を設定できます。Mountain Lionの〜/ .MacOSX / environment.plistのサポートを復元するだけでなく、ログアウトして再度ログインする必要なしに、変更内容をすぐに環境に公開します。<SNIP> EnvPaneには、 1)ログイン後の早い段階と2)〜/ .MacOSX / environment.plistが変更されるたびに実行されるlaunchdエージェント。エージェントは〜/ .MacOSX / environment.plistを読み取り、そのファイルから、launchctl setenvおよびlaunchctl unsetenvで使用されるのと同じAPIを介して現在のユーザーのlaunchdインスタンスに環境変数をエクスポートします。
免責事項:私は開発者や彼/彼女のプロジェクトとは全く関係がありません。
PS私は名前が好きです(「Ends Pain」のような音)。
(少なくとも)macOS 10.12.6(Sierra)の時点で、このメソッドはApacheのhttpd(system
とのuser
オプションの両方launchctl config
)で機能しなくなったようです。他のプログラムは影響を受けていないようです。これはhttpdのバグであると考えられます。
これはOS X 10.10+に関係します(特に10.11+ /usr/bin
は、が書き込み不能になったルートレスモードが原因です)。
OS Xのバグが原因で変数launchctl setenv PATH <new path>
を設定するためにを使用しPATH
ても機能しないことを複数の場所で読んだことがあります(これは個人的な経験からそうです)。シェルから起動されないアプリケーションPATH
にを設定できる別の方法があることがわかりました。
sudo launchctl config user path <new path>
このオプションは、launchctlのmanページに記載されています。
設定システム| ユーザーパラメータ値
launchd(8)ドメインの永続的な設定情報を設定します。システムドメインとユーザードメインのみを構成できます。永続ストレージの場所は実装の詳細であり、そのストレージへの変更はこのサブコマンドを通じてのみ行う必要があります。このサブコマンドで行った変更を有効にするには、再起動が必要です。
[...]
道
ターゲットドメイン内のすべてのサービスのPATH環境変数を文字列値に設定します。文字列値は、environ(7)のPATH環境変数で説明されている形式に準拠している必要があります。サービスが独自のPATHを指定している場合、サービス固有の環境変数が優先されることに注意してください。
注:この機能を使用して、ドメイン内のすべてのサービスの一般的な環境変数を設定することはできません。セキュリティ上の理由から、意図的にPATH環境変数のみにスコープが設定されています。
これは、Finderから起動したGUIアプリケーション(getenv
PATHの取得に使用)で動作することを確認しました。これを行う必要があるのは1回だけであり、変更は再起動後も持続することに注意してください。
sudo launchctl procinfo <gui-pid>
新しく設定されたPATH
環境を示します。しかし、sudo launchctl config user path <new path>
実際にはすべてのユーザーに設定されています...(新しいユーザーを追加し、Sublime Textのpythonコンソールを使用して確認されます)
sudo launchctl config user path
これが発生するのは、を実行した後だけではありません(想定しているように思われますか?)。
launchctl
では、任意の環境変数を設定できません。PATH
変数は例外です。
Mountain Lionでは、すべての編集/etc/paths
と/etc/launchd.conf
編集が効果を発揮しません。
Appleの開発者フォーラムは言う:
「.app自体のInfo.plistを変更して、必要な環境変数を含む「LSEnvironment」辞書を含めます。
〜/ .MacOSX / environment.plistはサポートされなくなりました。」
そのため、アプリケーションを直接編集しましたInfo.plist
( "AppName.app"(この場合はSourceTree)を右クリックしてから " Show package contents
")。
そして、私は新しいキー/辞書のペアを追加しました:
<key>LSEnvironment</key>
<dict>
<key>PATH</key>
<string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>
(参照:AppleのLaunchServicesKeysドキュメント)
これで、アプリケーション(私の場合はSourcetree)は指定されたパスを使用し、Git 1.9.3で動作します:-)
PS:もちろん、特定のパスのニーズに合わせてパスエントリを調整する必要があります。
Info.plist
ファイルを、アプリケーションのロードに失敗しますLSOpenURLsWithRole() failed with error -10810 for the file /Applications/Slack.app.
ここでの答えは「間違っている」わけではありませんが、もう1つ追加します。OSXで環境変数を変更しないでください。「すべてのプロセス」、またはシェルの外側にさえ影響を与え、すべてのプロセスが特定のユーザーによってインタラクティブに実行されます。
私の経験では、すべてのプロセスのPATHなどの環境変数へのグローバルな変更は、WindowsよりもOS Xで問題を引き起こす可能性がさらに高くなります。理由は、多くのOS Xアプリケーションおよびその他のソフトウェア(おそらく、特にOS自体のコンポーネントを含む)は、内部ではUNIXコマンドラインツールに依存しており、システムで提供されるこれらのツールのバージョンの動作を想定しているためです。絶対パスを使用する必要はありません(同様のコメントが動的に読み込まれるライブラリとDYLD_ *環境変数に適用されます)。たとえば、PythonやRubyなどのインタプリタのOS X提供バージョンの置き換えに関するさまざまなスタックオーバーフローの質問に対する最高評価の回答は、一般に「これを行わない」と言っていることを考慮してください。
OS Xは、この点で他のUNIXライクなオペレーティングシステム(Linux、FreeBSD、Solarisなど)とまったく同じです。Appleがこれを行う簡単な方法を提供していない最も可能性の高い理由は、それが物事を壊すためです。Windowsがこれらの問題の影響を受けにくい範囲では、次の2つの理由が原因です。(1)Windowsソフトウェアは、UNIXソフトウェアのようにコマンドラインツールに依存しない傾向があり、(2)Microsoftは、 PATHなどの「グローバル」構成オプションの影響を制限するために、新しいWindowsバージョンでの動的ロードの動作を変更したすべてのプロセスに影響を与える変更によって引き起こされる「DLL hell」とセキュリティ問題の両方のそのような広範な履歴。
「ラメ」かどうかにかかわらず、そのような変更を小さなスコープに制限すると、はるかに安定したシステムになります。
以前の答えがすべてうまくいかない場合があります。システム変数にアクセスしたい場合(M2_HOME
EclipseまたはIntelliJ IDEAで)に場合、この場合に機能するのは次のとおりです。
最初(ステップ1)編集 /etc/launchd.conf
ような行を含むようにします: "setenv VAR value"次に(ステップ2)再起動します。
OS Xではアプリケーションが他のUnixのように起動されないため、単に.bash_profileを変更するだけでは機能しません。親のシェル変数を継承しません。他のすべての変更は、私には不明な理由で機能しません。多分誰かがこれについて明確にすることができます。
[ 環境変数]設定ペインを追跡し、リンクが壊れていて、Appleのサイトを検索したところ、リンクを忘れたことを示しているようです...とらえどころのないlaunchdプロセスの軌跡に戻りました。
私のシステム(Mac OS X 10.6.8)では、environment.plistで定義された変数が Spotlightから(launchdを介して)起動されたアプリに確実にエクスポートされているようです。私の問題は、これらの変数がターミナルの新しいbashセッションにエクスポートされないことです。すなわち、私はここに描かれているように反対の問題を抱えています。
注:以前に説明したように、environment.plistはXMLではなくJSONのように見えます
〜/ MacOSX / environment.plist を編集することでSpotlightアプリに変数を表示 させることができました。また、.profileファイルに以下を追加することにより、同じ変数を強制的に新しいターミナルセッションに入れることができました。
eval $(launchctl export)
man launchd
、man launchctl
とman launchd.conf
ターミナルウィンドウに表示されます。Mac Developer Libraryが少し遅れていても、うれしいAppleはマニュアルページを最新に保ちます。
Matt Curtisの回答と同様に、launchctlを介して環境変数を設定しますが、exportという関数でラップします。これにより、.bash_profileで通常のように変数をエクスポートするときは常に、launchctlによっても設定されます。これが私がすることです:
私の.bash_profileは1行のみで構成されています(これは個人的な設定です)。
source .bashrc
私の.bashrcにはこれがあります:
function export()
{
builtin export "$@"
if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
then
launchctl setenv "${@%%=*}" "${@#*=}"
elif [[ ! "${@//[^ ]/}" ]]
then
launchctl setenv "${@}" "${!@}"
fi
}
export -f export
上記はBash組み込みの「export」をオーバーロードし、すべてを通常どおりにエクスポートし(「export」を一緒にエクスポートすることに気付くでしょう!)、次に、launchctlを介してOS Xアプリ環境に適切に設定します。
export LC_CTYPE=en_US.UTF-8
# ~$ launchctl getenv LC_CTYPE
# en_US.UTF-8
PATH="/usr/local/bin:${PATH}"
PATH="/usr/local/opt/coreutils/libexec/gnubin:${PATH}"
export PATH
# ~$ launchctl getenv PATH
# /usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
export CXX_FLAGS="-mmacosx-version-min=10.9"
# ~$ launchctl getenv CXX_FLAGS
# -mmacosx-version-min=10.9
このようにして、毎回すべての変数をlaunchctlに送信する必要がなく、.bash_profile / .bashrcを希望どおりに設定することができます。ターミナルウィンドウを開き、で興味のある環境変数をチェックアウトlaunchctl getenv myVar
し、.bash_profile / .bashrcで何かを変更し、ターミナルウィンドウを閉じて再度開き、launchctlで変数を再度確認して、変更します。
繰り返しになりますが、Mountain Lion後の世界の他のソリューションと同様に、新しい環境変数をアプリで使用できるようにするには、変更後にそれらを起動または再起動する必要があります。
ここにあなたが望むことをする非常に簡単な方法があります。私の場合、それはGradleを機能させることでした(Android Studioの場合)。
次のコマンドを実行します。
sudo nano /etc/paths
または sudo vim /etc/paths
プロンプトが表示されたら、パスワードを入力します。
新しいターミナルウィンドウを開き、次のように入力します。
echo $PATH
PATHの最後に追加された新しいパスが表示されます。
私はこの投稿からこれらの詳細を得ました:
OPはWindowsのようなシンプルなソリューションを探していると思います。
どうぞ:
http://www.apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html
各ファイルの目的を簡潔かつ明確にする
~/.profile
Terminal.appが起動されるたびに供給されます~/.bashrc
「伝統的に」Bash環境のすべてのエクスポートステートメントが設定されている場所です/etc/paths
Mac OSのメインファイルで、すべてのユーザーのPATH環境変数を構築するためのデフォルトパスのリストが含まれています/etc/paths.d/
追加の検索パスを保持するファイルが含まれています非端末プログラムは、端末が行うシステム全体のPATHおよびMANPATH変数を継承しません!特定のユーザーによって起動されたすべてのプロセスの環境を設定し、Mac OS X GUIアプリケーションで環境変数を使用できるようにするには、それらの変数を~/.MacOSX/environment.plist
(Apple Technical Q&A QA1067)
あなたを同期するために、次のコマンドラインを使用environment.plist
して/etc/paths
:
defaults write $HOME/.MacOSX/environment PATH "$(tr '\n' ':' </etc/paths)"
/etc/launchd.confは、OS X v10.10(Yosemite)、OS X v10.11(El Capitan)、macOS v10.12(Sierra)、またはmacOS v10.13(High Sierra)では使用されません。
launchctl
manページから:
/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time;
this functionality was removed for security considerations.
この「別の質問に答える」で説明されている方法は私にとって有効です(再起動後)。DockまたはSpotlightから起動されたアプリケーションは、で設定した環境変数を継承します~/Library/LaunchAgents/my.startup.plist
。(私の場合、Sublime TextプラグインLANG
をen_US.UTF-8
、に設定する必要がありました。)
$PATH
変数はまた、対象となるpath_helper
順番になりますが、の使用、/etc/paths
内のファイルとファイル/etc/paths.d
。
より詳細な説明は、LeopardのPATHおよびその他の環境の問題(2008-11)にあります。
それは簡単です:
〜/ .profileを編集し、変数を次のように配置します
$ vim〜/ .profile
ファイルに入れて:
MY_ENV_VAR =値
保存(:wq)
ターミナルを再起動します(終了して再度開きます)
すべてが問題ないことを確認してください:
$エコー$ MY_ENV_VAR
$値
単一ユーザーの変更に~/.profile
は、リストしたものを使用します。次のリンクは、さまざまなファイルがBashによって読み取られるタイミングについて説明しています。
http://telin.ugent.be/~slippens/drupal/bashrc_and_others
GUIアプリケーションの環境変数を設定する場合は、〜/ .MacOSX / environment.plistファイルが必要です
まあ、/etc/paths
と~/.MacOSX/environment.plist
ファイルについてはわかりません。それらは新しいです。
しかし、Bashでは、.bashrc
新しいシェルが呼び出されるたびに.bash_profile
実行され、起動時に一度だけ実行されることを知っておく必要があります。
Mac OS Xでこれがどのくらいの頻度で発生するかはわかりません。この違いは、ウィンドウシステムがすべてを起動することで壊れたと思います。
個人的に、私.bashrc
は必要なものすべてを含むファイルを作成することで混乱を取り除き、次に行います:
ln -s .bashrc .bash_profile
ターミナルプログラムを開きます(これはデフォルトでアプリケーション/ユーティリティフォルダにあります)。次のコマンドを実行します
touch ~/.bash_profile; open ~/.bash_profile
これにより、デフォルトのテキストエディタでファイルが開きます。
例としてAndroid SDKの場合:
Android SDKプラットフォームツールとツールディレクトリへのパスを追加する必要があります。私の例では、SDKがインストールされているディレクトリとして「/ Development / android-sdk-macosx」を使用します。次の行を追加します。
export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools
ファイルを保存して、テキストエディタを終了します。.bash_profileを実行して、PATHを更新します。
source ~/.bash_profile
これで、ターミナルプログラムを開くたびに、PATHにAndroid SDKが含まれます。
これを本当に簡単かつ迅速に行いました。まず、ターミナルから〜/ .bash_profileを作成します:
touch .bash_profile
その後
open -a TextEdit.app .bash_profile
追加
export TOMCAT_HOME=/Library/Tomcat/Home
文書を保存すれば完了です。
とても簡単です。ファイル.profile
(vi、nano、Sublime Textまたはその他のテキストエディター)ファイルを編集します。あなたはでそれを見つけることができ~/
、このようなディレクトリ(ユーザディレクトリ)とセット:
export MY_VAR=[your value here]
Javaホームの例:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/current
保存してターミナルに戻ります。
あなたはそれをリロードすることができます:
source .profile
または、ターミナルウィンドウを閉じて開きます。
ここには2種類の砲弾があります。
ここで理解することが重要です。Bashを使用する.bashrc
と、ファイルは対話型で非ログインのシェルによってのみ読み取られます.bashrc
。.bash_profile
この制限を克服するためにれる。
これで基本的な理解ができたので、セットアップをアドバイスする方法に移りましょう。
.bash_file:
#!/bin/bash
source ~/.profile # Get the PATH settings
source ~/.bashrc # Get Aliases and Functions
#
ログインシェル
/etc/profile
シェルは最初にfile内のコマンドを実行します/etc/profile
。root権限で作業しているユーザーは、このファイルをセットアップして、Bashを実行しているユーザーのシステム全体のデフォルト特性を確立できます。
.bash_profile
.bash_login
.profile
シェルのルックス次に~/.bash_profile
、~/.bash_login
と~/.profile
それが見つけたこれらのファイルの最初のコマンドを実行し、そのためには、(〜/自分のホームディレクトリの短期手です)。これらのファイルのいずれかにコマンドを入れて、で設定されたデフォルトを上書きできます/etc/profile
。仮想端末で実行されているシェルは、これらのファイルのコマンドを実行しません。
.bash_logout
ログアウトすると、bashは~/.bash_logout
ファイル内のコマンドを実行します。このファイルには、一時ファイルを削除するコマンドなど、セッション後にクリーンアップするコマンドが含まれていることがよくあります。
対話型非ログインシェル
/etc/bashrc
bashから直接呼び出されることはありませんが、多くの~/.bashrc
ファイルがを呼び出します/etc/bashrc
。このセットアップにより、root権限を使用するユーザーは、非ログインbashシェルのシステム全体のデフォルト特性を確立できます。
.bashrc
対話型の非ログインシェルは、~/.bashrc
ファイル内のコマンドを実行します。通常、などのログインシェルの起動ファイル.bash_profile
がこのファイルを実行するため、ログインシェルと非ログインシェルの両方がでコマンドを実行します.bashrc
。
のコマンドは.bashrc
何度も実行される可能性があり、サブシェルはエクスポートされた変数を継承するため、.bash_profile
ファイル内の既存の変数に追加するコマンドを配置することをお勧めします。
env "switch.1.disabled=true" open -n /Applications/Eclipse.app/
新しいセットのシステム環境でGUIアプリケーションを起動します。