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
と入力して変数が機能していることを確認します。新しい変数が表示されます。これらは、IntelliJ IDEAおよびSpotlightを介して起動する他のGUIアプリケーションでも使用可能になります。
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の下で既に実行されているシェルも含まれます。ただし、そこにいる場合は、より直接的に環境を設定できます。 bashまたはzshの場合はexport PATH=/opt/local/bin:/opt/local/sbin:$PATH
を使用します。
再起動後も変更を保持する /etc/launchd.conf
から環境変数を設定できます。
setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
再起動するとlaunchd.conf
が自動的に実行されます。
これらの変更を今すぐ有効にしたい場合は、このコマンドを使用してlaunchctl.conf
を再処理する必要があります。
egrep -v '^\s*#' /etc/launchd.conf | launchctl
launchctl
と、それがlaunchd.conf
をコマンドman launchctl
でどのようにロードするかについてもっと知ることができます。
最大で OS X v10.7 (Lion)で設定できます
~/.MacOSX/environment.plist
見る:
ターミナルのPATHには、.bash_profile
または.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
接尾辞(例えば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
パラメータが重要です。 login Shell を指定してShellスクリプトを実行する必要があるため、このスクリプトが実行される前に~/.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)にとって究極の解決策になることを願っています。
1。
vim ~/.bash_profile
ファイルが存在しない可能性があります(存在しない場合は、単に作成できます)。
2.入力してファイルを保存します。
export PATH=$PATH:YOUR_PATH_HERE
3.実行
source ~/.bash_profile
OS Xで環境変数を処理するときに解決するべき本質的に2つの問題があります。1つはSpotlightからプログラムを呼び出すとき(Macメニュー/ステータスバーの右側にある虫眼鏡アイコン)と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 OSX Mountain Lion(10.8)環境設定パネル/ 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インスタンスに環境変数をエクスポートします。
免責事項:私は開発者や彼/彼女のプロジェクトには一切関係ありません。
P.S私はその名前が好きです( 'Ends Pain'のように聞こえます)。
Mountain Lionでは、/etc/paths
と/etc/launchd.conf
の編集はすべて効果がありません。
アップルの開発者フォーラムは言います:
msgstr "" .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ドキュメント )
これで、App(私の場合はSourceTree)は指定されたパスを使用し、Git 1.9.3で動作します。
シモンズ:もちろん、あなたはあなたの特定のパスのニーズにパスエントリを調整する必要があります。
ここでの答えは「間違っている」わけではありませんが、OS Xで「すべてのプロセス」に影響を与えたり、シェルの外部で、特定のユーザーが対話的に実行したりする環境変数の変更は絶対にしないでください。
私の経験では、すべてのプロセスでPATHのような環境変数をグローバルに変更すると、WindowsよりもOS Xで問題が起きやすくなります。そのため、多くのOS Xアプリケーションや他のソフトウェア(特に、特にOS自体のコンポーネントを含む)は、内部のUNIXコマンドラインツールに依存しており、システムで提供されるこれらのツールのバージョンの動作を前提としています。その際に絶対パスを使用する必要はありません(動的にロードされたライブラリーおよびDYLD_ *環境変数にも同様のコメントが当てはまります)。例えば、PythonやRubyのようなOS X提供のインタプリタを置き換えることに関する様々なStack Overflowの質問に対する最高評価の答えは、一般的に「しない」と言っていると考えてください。
この点で、OS Xは他のUNIX系オペレーティングシステム(Linux、FreeBSD、Solarisなど)とまったく同じです。 Appleがこれをする簡単な方法を提供しない最も可能性の高い理由はそれが 物事を壊す だからです。 Windowsがこれらの問題を起こしにくいというのは、次の2つの理由によるものです。(1)Windowsソフトウェアは、UNIXソフトウェアほどコマンドラインツールに依存しない傾向があります。 PATHのような「グローバル」設定オプションの影響を制限するために新しいWindowsバージョンでの動的ロードの動作を変更したため、すべてのプロセスに影響する変更によって引き起こされる「DLL地獄」とセキュリティ問題の両方のそのような広範な歴史。
"Lame"であろうとなかろうと、そのような変更をより小さなスコープに限定すれば、はるかに安定したシステムになります。
(少なくとも)macOS 10.12.6(Sierra)以降、このメソッドはApache httpd(system
およびlaunchctl config
のuser
オプションの両方)で機能しなくなったようです。他のプログラムは影響を受けないようです。これがhttpdのバグであると考えられます。
これはOS X 10.10以降(特に/usr/bin
が書き込めなくなったrootlessモードによる10.11以降)に関係します。
私はPATH
変数を設定するためにlaunchctl setenv PATH <new path>
を使用することはOS Xのバグのためにうまくいかないということを何度も読みました(これは個人的な経験からも真実です)。 PATH
をシェルから起動されていないアプリケーション _に設定できる別の方法があることがわかりました。
Sudo launchctl config user path <new path>
このオプションは、launchctlのマニュアルページに記載されています。
設定システム|ユーザパラメータ値
Launchd(8)ドメインの永続的な設定情報を設定します。システムドメインとユーザードメインのみを設定できます。永続ストレージの場所は実装の詳細であり、そのストレージへの変更はこのサブコマンドによってのみ行われるべきです。このサブコマンドによる変更を有効にするには、再起動が必要です。
[...]
パス
ターゲットドメイン内のすべてのサービスのPATH環境変数を文字列値に設定します。文字列値は、environ(7)のPATH環境変数で概説されているフォーマットに準拠する必要があります。サービスが独自のPATHを指定している場合は、サービス固有の環境変数が優先されます。
注:この機能は、ドメイン内のすべてのサービスに対して一般的な環境変数を設定するためには使用できません。これは意図的にPATH環境変数に限定されており、セキュリティ上の理由から他に何もありません。
私はこれがFinder(PATHを得るためにgetenv
を使う)から始められたGUIアプリケーションで動作することを確認しました。あなたが一度だけこれをする必要があることに注意してくださいそして変更は再起動を通して持続するでしょう。
前の答えがすべてうまくいかない場合があります。 EclipseまたはIntelliJ IDEAのシステム変数(M2_HOME
など)にアクセスしたい場合は、この場合に私にはうまくいく唯一のことです。
最初に(ステップ1)次のような行を含むように/etc/launchd.conf
を編集します: "setenv VAR value"そして次に(ステップ2)リブートします。
OS Xでは他のUNIXのようにアプリケーションが起動されないため、.bash_profileを変更するだけではうまくいきません。それらは親のシェル変数を継承しません。他の修正はすべて私には分からない理由ではうまくいきません。多分他の誰かがこれについてはっきりさせることができます。
Environment Variables設定ペインを追いかけて そしてリンクが壊れていてAppleのサイトを検索したところそれらが忘れられていたことを発見したようです…私はとらえどころのないlaunchdプロセスの道に戻りました。
私のシステム(Mac OS X 10.6.8)では、environment.plist areで定義された変数はSpotlightから(launchdを介して)起動されたアプリケーションに確実にエクスポートされているようです。私の問題は、それらのvarがTerminalの新しいbashセッションにエクスポートされていないことです。すなわちここに描かれているように私は反対の問題を抱えている。
注:environment.plistは、前述のとおり、XMLではなくJSONのように見えます。
edit〜/ MacOSX/environment.plist と を追加することでSpotlightアプリにvarsを表示させることができました。 .profileファイル:
eval $(launchctl export)
Bash起動ファイルのいずれか - ~/.bashrc
、~/.bash_profile
、~/.profile
。 GUIアプリケーションの環境変数用に、~/.MacOSX/environment.plist
という名前の変なファイルもあります。
これはあなたが望むことをするためのとても簡単な方法です。私の場合、gradle
が機能するようになっていました(Android Studio
の場合)。
次のコマンドを実行してください。
Sudo nano /etc/paths
またはSudo vim /etc/paths
プロンプトが表示されたら、パスワードを入力してください。
新しい端末ウィンドウを開いてから、次のように入力します。
echo $PATH
PATHの最後に新しいパスが追加されているはずです。
私はこの記事からこれらの詳細を得ました:
http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q
私はそれが他の人を助けることができると思います
Matt Curtisが答えたのと同じように、私はlaunchctlを介して環境変数を設定しますが、私はそれをexportと呼ばれる関数にラップします。そのため、通常のように変数をエクスポートします。これが私がしていることです:
私の.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
が供給されます~/.bashrc
は、「伝統的に」Bash環境用のすべてのエクスポートステートメントが設定されている場所です。/etc/paths
は、すべてのユーザー用のPATH環境変数を構築するためのデフォルトパスのリストを含むMac OSのメインファイルです。/etc/paths.d/
には追加の検索パスを保持するファイルが含まれています端末以外のプログラムは、あなたの端末が持っているシステム全体のPATHとMANPATH変数を継承しません。特定のユーザによって起動されたすべてのプロセスの環境を設定して環境変数をMac OS X GUIアプリケーションで使用できるようにするには、それらの変数を~/.MacOSX/environment.plist
で定義する必要があります(アップルテクニカルQ&A QA1067)
environment.plist
を/etc/paths
と同期させるには、次のコマンドラインを使用します。
defaults write $HOME/.MacOSX/environment PATH "$(tr '\n' ':' </etc/paths)"
$PATH
変数もpath_helper
の影響を受けます。これは、/etc/paths
ファイルおよび/etc/paths.d
内のファイルを使用します。
より徹底的な説明はここにあります: http://hea-www.harvard.edu/~fine/OSX/path_helper.html
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
に設定する必要がありました。)
シングルユーザーによる変更の場合は、リストにあるもののうち~/.profile
を使用してください。次のリンクは、異なるファイルがいつBashによって読み取られるかを説明しています。
http://telin.ugent.be/~slippens/drupal/bashrc_and_others
Guiアプリケーション用の環境変数を設定したい場合は〜/ .MacOSX/environment.plistファイルが必要です。
それは簡単です:
〜/ .profileを編集して、変数を次のように配置してください。
$ vim〜/ .profile
ファイルに置く:
MY_ENV_VAR =値
保存(:wq)
端末を再起動します(終了してもう一度開きます)。
すべてうまくいっていることを確認してください。
$ echo $ MY_ENV_VAR
$ value
提案されているアプローチに加えて注意すべきことは、 OS X 10.5 (Leopard)では少なくともlaunchd.conf
に設定されている変数は.profile
に行われていた設定とマージされるということです。これは~/.MacOSX/environment.plist
の設定にも当てはまる可能性が高いと思いますが、検証していません。
ターミナルプログラムを開きます(これはデフォルトでApplications/Utilitesフォルダにあります)。以下のコマンドを実行してください。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
ファイルを保存してテキストエディタを終了します。あなたのPATHを更新するためにあなたの.bash_profileを実行してください。
source ~/.bash_profile
これで、ターミナルプログラムを開くたびに、PATHにAndroid SDKが含まれるようになります。
/etc/paths
と~/.MacOSX/environment.plist
ファイルについてはよくわかりません。それらは新しいです。
しかしBashでは、.bashrc
は新しいShellの呼び出しのたびに実行され、.bash_profile
は起動時に一度だけ実行されることを知っておく必要があります。
私はこれがMac OS Xにどれほどの頻度であるのかわかりません。私は、ウィンドウシステムがすべてを起動することによって区別が崩れたと思います。
個人的には、必要なものすべてを含む.bashrc
ファイルを作成してから、次のようにして混乱を解消します。
ln -s .bashrc .bash_profile
これは本当に簡単で素早くできました。まず端末から 〜/ .bash_profile を作成します。
touch .bash_profile
それから
open -a TextEdit.app .bash_profile
追加する
export Tomcat_HOME=/Library/Tomcat/Home
文書を保存すれば完了です。
ログインシェル
/etc/profile
シェルは最初に/ 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ファイルに追加することをお勧めします。
IOSに関するすべてのマジックは、ファイルでsource
を使用するだけです。ここで、あなたは自分のENV変数をエクスポートします。
例えば:
このようなファイルを作成することができます:
export bim=fooo
export bom=bar
このファイルをbimbom.env
として保存し、source ./bimbom.ev
を実行します。あなたのENV変数が手に入りました。
それらをチェックしてください:echo $bim
ここには2種類の砲弾があります。
ここで理解しておくべき重要な点は、bashの場合、.bashrcは対話型でログインなしのシェルによってのみ読み取られることです。この制限を克服するために、.bashrcを.bash_profileに読み込むことがよくあります。
基本的な理解が終わりましたので、セットアップのアドバイスをお願いします。
.bash_file:
#!/bin/bash
source ~/.profile # Get the PATH settings
source ~/.bashrc # Get Aliases and Functions
#
それは非常に簡単です、.profile(vi、nano、sublimeTextまたは他のテキストエディタ)ファイルを編集してください、あなたはそれを〜/ディレクトリ(ユーザディレクトリ)に見つけて、このように設定することができます:
export MY_VAR=[your value here]
javaホームの例:
export Java_HOME=/Library/Java/JavaVirtualMachines/current
保存してターミナルに戻ります。
あなたはそれをリロードすることができます:
source .profile
または端末ウィンドウを閉じる/開く。
Bashの場合は、環境変数を/etc/profile
ファイルに追加して、すべてのユーザーが利用できるようにします。再起動する必要はありません。新しいターミナルセッションを開始するだけです。