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
.
environment.plist は、Spotlight 経由で起動されたアプリケーションでは機能しないことに注意してください。これは Steve Sexton によって文書化されています。
端末プロンプトを開く
タイプ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 アプリケーションでも利用できます。
launchctlのマニュアルページには、機能しなかったと書かれています。
非推奨および削除された機能
launchctlにはインタラクティブモードがなくなり、stdinからのコマンドも受け入れられなくなりました。/etc/launchd.confファイルは、起動初期に実行されるサブコマンドについて参照されなくなりました。この機能は、セキュリティ上の理由から削除されました。ユーザーのセッションを設定する前に$HOME/ .launchd.confを参照することが文書化されていましたが、この機能は実装されていませんでした。
を使用して、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などを使用して環境をより直接的に設定できます。
を使用しlaunchctl config user path /bin:/usr/bin:/mystuff
ます。詳細については、を参照man launchctl
してください。
この回答の上部にあるlaunchctlのマニュアルページの引用には、ここで説明されている機能(/etc/launchd.conf
起動時の読み取り)がセキュリティ上の理由で削除されたため、ymmvが記載されています。
再起動後も変更を保持するには/etc/launchd.conf
、次のようにから環境変数を設定できます。
setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchd.conf
再起動すると自動的に実行されます。
これらの変更を今すぐ有効にする場合は、このコマンドを使用して再処理する必要がありますlaunchd.conf
(@mklementのヒントに感謝します!)
egrep -v '^\s*#' /etc/launchd.conf | launchctl
コマンドを使用すると、その詳細launchctl
とロード方法を確認できます。launchd.conf
man launchctl
OS X v10.7(Lion)までは、次の場所に設定できます。
~/.MacOSX/environment.plist
見る:
.bash_profile
ターミナルのPATHについては、またはを設定できる必要があり.profile
ます(ただし、おそらく作成する必要があります)
OS X v10.8(Mountain Lion)以降では 、とを使用する必要がありlaunchd
ますlaunchctl
。
~/.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
接尾辞 (例: named 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) では、これが究極のソリューションになることを願っています。
行う:
vim ~/.bash_profile
ファイルが存在しない可能性があります (存在しない場合は、作成するだけです)。
これを入力して、ファイルを保存します。
export PATH=$PATH:YOUR_PATH_HERE
走る
source ~/.bash_profile
OS X で環境変数を処理する場合、基本的に 2 つの問題を解決する必要があります。1 つ目は、Spotlight (Mac メニュー/ステータス バーの右側にある虫めがねアイコン) からプログラムを呼び出す場合、2 つ目は、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)))
注: このソリューションは、私が追加する前に出てきたもの、特に Matt Curtis によって提供されたものを組み合わせたものですが、意図的に~/.bash_profile
コンテンツ プラットフォームを独立させ、launchd
環境の設定 (Mac のみの機能) を別のスクリプトに入れようとしました。 .
別の無料のオープンソース Mac OS X v10.8 (Mountain Lion) Preference ペイン/environment.plist ソリューションはEnvPaneです。
EnvPane のソース コードはGitHubで入手できます。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' のように聞こえます)。
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>
(参照: LaunchServicesKeys Documentation at Apple )
これで、アプリケーション (私の場合は Sourcetree) は指定されたパスを使用し、Git 1.9.3 で動作します:-)
PS: もちろん、特定のパスのニーズに合わせてパス エントリを調整する必要があります。
(少なくとも) 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 ( getenv
PATH の取得に使用) から開始された GUI アプリケーションで動作することを確認しています。これを行う必要があるのは 1 回だけで、変更は再起動後も持続することに注意してください。
ここでの答えは「間違っている」わけではありませんが、もう1つ追加します。OSXで「すべてのプロセス」に影響する環境変数の変更を行わないでください。シェルの外部でも、特定のユーザーがインタラクティブに実行するすべてのプロセスに影響を与えます。
私の経験では、すべてのプロセスのPATHなどの環境変数へのグローバルな変更は、WindowsよりもOSXで問題を引き起こす可能性がさらに高くなります。理由は、多くのOS Xアプリケーションやその他のソフトウェア(おそらく特にOS自体のコンポーネントを含む)が内部でUNIXコマンドラインツールに依存しており、システムに付属しているこれらのツールのバージョンの動作を想定しているためです。その際、必ずしも絶対パスを使用する必要はありません(動的にロードされるライブラリとDYLD_ *環境変数にも同様のコメントが適用されます)。たとえば、PythonやRubyなどのOS Xが提供するバージョンのインタプリタの置き換えに関するさまざまなStackOverflowの質問に対する最高評価の回答は、一般的に「これを行わないでください」と言っていることを考慮してください。
OS Xは、この点で他のUNIXライクなオペレーティングシステム(Linux、FreeBSD、Solarisなど)とまったく同じです。Appleがこれを行う簡単な方法を提供しない最も可能性の高い理由は、それが物事を壊すからです。Windowsがこれらの問題を起こしにくいという点で、それは2つの理由によるものです。(1)WindowsソフトウェアはUNIXソフトウェアほどコマンドラインツールに依存しない傾向があり、(2)Microsoftはすべてのプロセスに影響を与える変更によって引き起こされる「DLL地獄」とセキュリティ問題の両方のこのような広範な履歴により、PATHなどの「グローバル」構成オプションの影響を制限するために新しいWindowsバージョンの動的ロードの動作が変更されました。
「同じ」であろうとなかろうと、そのような変更をより小さなスコープに制限すると、はるかに安定したシステムが得られます。
以前の回答がすべてうまくいかない場合があります。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 で定義された変数が、( launchd を介して) Spotlight から起動されたアプリに確実にエクスポートされているようです。私の問題は、これらの変数がターミナルの新しい bash セッションにエクスポートされていないことです。つまり、ここに描かれているのとは逆の問題があります。
注: 前述のように、environment.plist は XML ではなく JSON のように見えます。
~/MacOSX/environment.plist を編集することで、Spotlight アプリに変数を表示 させることができました。また、以下を .profile ファイルに追加することで、同じ変数を新しいターミナル セッションに強制することができました。
eval $(launchctl export)
Bashスタートアップファイルのいずれか- ~/.bashrc
、、。GUIアプリケーションの環境変数にちなんで名付けられたある種の奇妙なファイルもあります。~/.bash_profile
~/.profile
~/.MacOSX/environment.plist
これは、あなたが望むことを行うための非常に簡単な方法です。私の場合は、Gradle を動作させることでした (Android Studio の場合)。
次のコマンドを実行します。
sudo nano /etc/paths
またsudo vim /etc/paths
プロンプトが表示されたら、パスワードを入力します。
新しいターミナル ウィンドウを開き、次のように入力します。
echo $PATH
PATH の末尾に追加された新しいパスが表示されます。
この投稿からこれらの詳細を取得しました:
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 後の世界の他のソリューションと同様に、新しい環境変数をアプリで使用できるようにするには、変更後にそれらを起動または再起動する必要があります。
OPはシンプルでWindowsのようなソリューションを探していると思います。
どうぞ:
http://www.apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html
各ファイルの目的を簡潔かつ明確にする
~/.profile
Terminal.app が起動されるたびに供給されます~/.bashrc
「伝統的に」Bash環境のすべてのエクスポートステートメントが設定されている場所です/etc/paths
すべてのユーザーの PATH 環境変数を構築するためのデフォルト パスのリストを含む、Mac OS のメイン ファイルです。/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
マニュアルページから:
/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time;
this functionality was removed for security considerations.
このAsk Different answerで説明されている方法は、 (再起動後) 私にとってはうまくいきます。Dock または Spotlight から起動されたアプリケーションは、 で設定した環境変数を継承します~/Library/LaunchAgents/my.startup.plist
。(私の場合は、Sublime Text プラグイン用に ,LANG
を, に設定する必要がありました。)en_US.UTF-8
この$PATH
変数は の影響も受けます。path_helper
これにより、 の/etc/paths
ファイルとファイルが使用され/etc/paths.d
ます。
より完全な説明は、Leopard (2008-11)の PATH およびその他の環境問題にあります。
これを本当に簡単かつ迅速に行いました。最初にターミナルから~/.bash_profileを作成します:
touch .bash_profile
それから
open -a TextEdit.app .bash_profile
追加
export TOMCAT_HOME=/Library/Tomcat/Home
ドキュメントを保存して完了です。
シングルユーザーによる変更の場合~/.profile
は、リストしたものを使用します。次のリンクは、さまざまなファイルがBashによって読み取られるタイミングを説明しています。
http://telin.ugent.be/~slippens/drupal/bashrc_and_others
GUIアプリケーションの環境変数を設定する場合は、〜/ .MacOSX/environment.plistファイルが必要です。
とても簡単です。ファイル.profile
(vi、nano、Sublime Textまたはその他のテキスト エディター) ファイルを編集します。~/
ディレクトリ(ユーザーディレクトリ)で見つけて、次のように設定できます。
export MY_VAR=[your value here]
Java ホームの例:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/current
保存してターミナルに戻ります。
次の方法でリロードできます。
source .profile
または、ターミナル ウィンドウを閉じてから開きます。
ターミナル プログラムを開きます (これはデフォルトでアプリケーション/ユーティリティ フォルダにあります)。次のコマンドを実行します
touch ~/.bash_profile; open ~/.bash_profile
これにより、デフォルトのテキスト エディターでファイルが開きます。
例として Android SDK の場合:
Android SDK platform-tools および tools ディレクトリへのパスを追加する必要があります。この例では、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 が含まれるようになります。
/etc/paths
と~/.MacOSX/environment.plist
ファイルについてはよくわかりません。それらは新しいです。
.bashrc
しかし、Bash では、新しいシェル呼び出しごとに.bash_profile
実行され、起動時に 1 回だけ実行されることを知っておく必要があります。
これが Mac OS X でどのくらいの頻度で発生するかはわかりません。ウィンドウ システムがすべてを起動することで、この区別が崩れたと思います。
個人的には、.bashrc
必要なものすべてを含むファイルを作成して混乱を解消し、次のことを行います。
ln -s .bashrc .bash_profile
提案されたアプローチに加えて注意すべきことの 1 つは、少なくともOS X 10.5launchd.conf
(Leopard) では、 で設定された変数が で行われた設定とマージされること.profile
です。これは の設定に~/.MacOSX/environment.plist
も有効である可能性が高いと思いますが、確認していません。
それは簡単です:
~/.profile を編集し、次のように変数を配置します
$ vim ~/.profile
ファイルに入れます:
MY_ENV_VAR=値
保存 ( :wq )
ターミナルを再起動します(終了して再度開きます)
すべて問題ないことを確認してください:
$ エコー $MY_ENV_VAR
$値
ここでは 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
(~/ はホーム ディレクトリの省略形) をこの順序で探し、最初に見つかったファイルのコマンドを実行します。これらのファイルの 1 つにコマンドを入れて、 で設定されたデフォルトをオーバーライドできます/etc/profile
。仮想端末で実行されているシェルは、これらのファイル内のコマンドを実行しません。
.bash_logout
ログアウトすると、bash は~/.bash_logout
ファイル内のコマンドを実行します。このファイルには、多くの場合、一時ファイルを削除するコマンドなど、セッション後にクリーンアップするコマンドが含まれています。
インタラクティブな非ログイン シェル
/etc/bashrc
bash によって直接呼び出されるわけではありませんが、多くの~/.bashrc
ファイルは/etc/bashrc
. この設定により、root 権限で作業するユーザーは、ログインしていない bash シェルのシステム全体のデフォルト特性を確立できます。
.bashrc
対話型の非ログイン シェルは、~/.bashrc
ファイル内のコマンドを実行します。通常、 などのログイン シェルのスタートアップ ファイル.bash_profile
がこのファイルを実行するため、ログイン シェルと非ログイン シェルの両方で のコマンドが実行され.bashrc
ます。
コマンドは.bashrc
何度も実行される可能性があり、サブシェルはエクスポートされた変数を継承するため、ファイル内の既存の変数に追加するコマンドを配置することをお勧めし.bash_profile
ます。
Bash の場合は、環境変数をファイル/etc/profile
に追加して、すべてのユーザーが使用できるようにしてください。再起動する必要はありません。新しいターミナル セッションを開始するだけです。