web-dev-qa-db-ja.com

OS Xで環境変数を設定する

OS XでPATHのような環境変数を修正するための正しい方法は何ですか?

私はGoogleを少し見て、編集する3つの異なるファイルを見つけました:

  • / etc/paths
  • 〜/ .profile
  • 〜/ .tcshrc

私はこれらのファイルのいくつかさえ持っていません、そして私はOS Xが今bashを使っているので、 .tcshrc が間違っていると確信しています。これらの変数、特にPATHはどこに定義されていますか?

私は実行しています OS X v10.5 (Leopard)。

826
Paul Wicks

ブルーノは軌道に乗っている。私は徹底的な調査をしました、そしてあなたがすべてのGUIアプリケーションで利用可能な変数を設定したいならば、あなたの唯一のオプションは/etc/launchd.confです。

environment.plistは、Spotlightを介して起動されたアプリケーションには機能しません。これはSteve Sextonによって文書化されています

  1. 端末プロンプトを開く

  2. Sudo vi /etc/launchd.confと入力します(注:このファイルはまだ存在していない可能性があります)

  3. 以下のような内容をファイルに入れます。

    # 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
    
  4. 変更をviに保存してMacを再起動します。または上記のコードコメントに示されている grep / xargs コマンドを使用します。

  5. ターミナルウィンドウを開いてexportと入力して変数が機能していることを確認します。新しい変数が表示されます。これらは、IntelliJ IDEAおよびSpotlightを介して起動する他のGUIアプリケーションでも使用可能になります。

637

Spotlightによって開始された新しいプロセスの環境を設定する方法(再起動する必要なしに)

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でどのようにロードするかについてもっと知ることができます。

252
Matt Curtis

最大で OS X v10.7 (Lion)で設定できます

~/.MacOSX/environment.plist

見る:

ターミナルのPATHには、.bash_profileまたは.profileを設定できるはずです(おそらく作成する必要があるでしょう)。

OS X v10.8 (Mountain Lion)以降の場合launchdlaunchctl を使う必要があります。

105
tim_yates

単一のソースからのコマンドラインとGUIアプリケーションの両方のためのソリューション(YosemiteとEl Capitanで動作します)

次のスニペットのように、あなたの~/.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)にとって究極の解決策になることを願っています。

61
Ersin Er

1。

vim ~/.bash_profile

ファイルが存在しない可能性があります(存在しない場合は、単に作成できます)。

2.入力してファイルを保存します。

export PATH=$PATH:YOUR_PATH_HERE

3.実行

source ~/.bash_profile
49
MrROY

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のみの機能)の設定を別のスクリプト.

35
pajato0

別の無料のオープンソースの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'のように聞こえます)。

22
Big Rich

Mountain Lionでは、/etc/paths/etc/launchd.confの編集はすべて効果がありません。

アップルの開発者フォーラムは言います:

msgstr "" .app自体のInfo.plistを変更して、あなたが望む環境変数を持つ "LSEnvironment"辞書を含むようにしてください。

〜/ .MacOSX/environment.plistはサポートされなくなりました。 "

だから私は直接アプリのInfo.plistを編集しました( "AppName.app"(この場合はSourceTree)を右クリックしてから "Show package contents")

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/[email protected]/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ドキュメント

enter image description here

これで、App(私の場合はSourceTree)は指定されたパスを使用し、Git 1.9.3で動作します。

シモンズ:もちろん、あなたはあなたの特定のパスのニーズにパスエントリを調整する必要があります。

17
Flori

ここでの答えは「間違っている」わけではありませんが、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"であろうとなかろうと、そのような変更をより小さなスコープに限定すれば、はるかに安定したシステムになります。

16
Jason T. Miller

更新日(2017-08-04)

(少なくとも)macOS 10.12.6(Sierra)以降、このメソッドはApache httpd(systemおよびlaunchctl configuserオプションの両方)で機能しなくなったようです。他のプログラムは影響を受けないようです。これが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アプリケーションで動作することを確認しました。あなたが一度だけこれをする必要があることに注意してくださいそして変更は再起動を通して持続するでしょう。

15
Max Leske

前の答えがすべてうまくいかない場合があります。 EclipseまたはIntelliJ IDEAのシステム変数(M2_HOMEなど)にアクセスしたい場合は、この場合に私にはうまくいく唯一のことです。

最初に(ステップ1)次のような行を含むように/etc/launchd.confを編集します: "setenv VAR value"そして次に(ステップ2)リブートします。

OS Xでは他のUNIXのようにアプリケーションが起動されないため、.bash_profileを変更するだけではうまくいきません。それらは親のシェル変数を継承しません。他の修正はすべて私には分からない理由ではうまくいきません。多分他の誰かがこれについてはっきりさせることができます。

15

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)
13
Russell B

Bash起動ファイルのいずれか - ~/.bashrc~/.bash_profile~/.profile。 GUIアプリケーションの環境変数用に、~/.MacOSX/environment.plistという名前の変なファイルもあります。

10
John Millikin

これはあなたが望むことをするためのとても簡単な方法です。私の場合、gradleが機能するようになっていました(Android Studioの場合)。

  • ターミナルを開きます。
  • 次のコマンドを実行してください。

    Sudo nano /etc/pathsまたはSudo vim /etc/paths

  • プロンプトが表示されたら、パスワードを入力してください。

  • ファイルの一番下に移動して、追加したいパスを入力します。
  • 終了するには、control-xを押してください。
  • 変更されたバッファを保存するために 'Y'を入力してください。
  • 新しい端末ウィンドウを開いてから、次のように入力します。

    echo $PATH

PATHの最後に新しいパスが追加されているはずです。

私はこの記事からこれらの詳細を得ました:

http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

私はそれが他の人を助けることができると思います

10
wired00

Matt Curtisが答えたのと同じように、私はlaunchctlを介して環境変数を設定しますが、私はそれをexportと呼ばれる関数にラップします。そのため、通常のように変数をエクスポートします。これが私がしていることです:

  1. 私の.bash_profileは1行のみで構成されています(これは単なる個人的な好みです)。

    source .bashrc
    
  2. 私の.bashrcにはこれがあります。

    function export()
    {
        builtin export "[email protected]"
        if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
        then
            launchctl setenv "${@%%=*}" "${@#*=}"
        Elif [[ ! "${@//[^ ]/}" ]]
        then
            launchctl setenv "${@}" "${[email protected]}"
        fi
    }
    
    export -f export
    
  3. 上記は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
    
  4. こうすれば、毎回launchctlにすべての変数を送る必要がなくなり、自分の.bash_profile/.bashrcに必要な方法を設定させることができます。ターミナルウィンドウを開き、launchctl getenv myVarで興味のある環境変数をチェックし、.bash_profile/.bashrcで何かを変更し、ターミナルウィンドウを閉じて再度開き、launchctlで変数を再度チェックしてください。 。

  5. また、Mountain Lion以降の世界の他のソリューションと同様に、新しい環境変数をアプリケーションで使用できるようにするには、変更後にそれらを起動または再起動する必要があります。

10
courtlandj

私は、OPはWindowsのようなシンプルなソリューションを探していると思います。

どうぞ:

http://www.Apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html

8
Tom Teman

各ファイルが何のために意図されているかについて簡潔かつ明確にするため

  • Terminal.appが起動されるたびに~/.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)"
7

$PATH変数もpath_helperの影響を受けます。これは、/etc/pathsファイルおよび/etc/paths.d内のファイルを使用します。

より徹底的な説明はここにあります: http://hea-www.harvard.edu/~fine/OSX/path_helper.html

5
Nicolas Wu

/etc/launchd.confは、Yosemite、El Capitain、または(高)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プラグインのためにLANGen_US.UTF-8に設定する必要がありました。)

4
David

シングルユーザーによる変更の場合は、リストにあるもののうち~/.profileを使用してください。次のリンクは、異なるファイルがいつBashによって読み取られるかを説明しています。

http://telin.ugent.be/~slippens/drupal/bashrc_and_others

Guiアプリケーション用の環境変数を設定したい場合は〜/ .MacOSX/environment.plistファイルが必要です。

3
mmaibaum

それは簡単です:

〜/ .profileを編集して、変数を次のように配置してください。

$ vim〜/ .profile

ファイルに置く:

MY_ENV_VAR =値

  1. 保存(:wq)

  2. 端末を再起動します(終了してもう一度開きます)。

  3. すべてうまくいっていることを確認してください。

$ echo $ MY_ENV_VAR

$ value


3

提案されているアプローチに加えて注意すべきことは、 OS X 10.5 (Leopard)では少なくともlaunchd.confに設定されている変数は.profileに行われていた設定とマージされるということです。これは~/.MacOSX/environment.plistの設定にも当てはまる可能性が高いと思いますが、検証していません。

3
MiB

Mac OSでPATH環境変数を設定します

ターミナルプログラムを開きます(これはデフォルトで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が含まれるようになります。

3
Charaf JRA

/etc/paths~/.MacOSX/environment.plistファイルについてはよくわかりません。それらは新しいです。

しかしBashでは、.bashrcは新しいShellの呼び出しのたびに実行され、.bash_profileは起動時に一度だけ実行されることを知っておく必要があります。

私はこれがMac OS Xにどれほどの頻度であるのかわかりません。私は、ウィンドウシステムがすべてを起動することによって区別が崩れたと思います。

個人的には、必要なものすべてを含む.bashrcファイルを作成してから、次のようにして混乱を解消します。

ln -s .bashrc .bash_profile
3
mike511

これは本当に簡単で素早くできました。まず端末から 〜/ .bash_profile を作成します。

touch .bash_profile

それから

open -a TextEdit.app .bash_profile

追加する

export Tomcat_HOME=/Library/Tomcat/Home

文書を保存すれば完了です。

2
CodeOverRide

ログインシェル

/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ファイルに追加することをお勧めします。

2
Koray Tugay

IOSに関するすべてのマジックは、ファイルでsourceを使用するだけです。ここで、あなたは自分のENV変数をエクスポートします。

例えば:

このようなファイルを作成することができます:

export bim=fooo
export bom=bar

このファイルをbimbom.envとして保存し、source ./bimbom.evを実行します。あなたのENV変数が手に入りました。

それらをチェックしてください:echo $bim

2
suther

ここには2種類の砲弾があります。

  • ログインしていない場合:bashの新しいコピーを起動するたびに、.bashrcがリロードされます。
  • ログイン:.profileは、ログインしたとき、またはbashに明示的にロードしてログインシェルとして使用したときにのみロードされます。

ここで理解しておくべき重要な点は、bashの場合、.bashrcは対話型でログインなしのシェルによってのみ読み取られることです。この制限を克服するために、.bashrcを.bash_profileに読み込むことがよくあります。

基本的な理解が終わりましたので、セットアップのアドバイスをお願いします。

  • .profile:存在しないものを作成してください。 PATH設定をそこに入れてください。
  • .bashrc:存在しない場合は作成します。そこにすべてのエイリアスとカスタムメソッドを入れてください。
  • .bash_profile:存在しない場合は作成します。そこに以下を入れてください。

.bash_file:

#!/bin/bash
source ~/.profile # Get the PATH settings
source ~/.bashrc  # Get Aliases and Functions
#
2
ZOXIS

それは非常に簡単です、.profile(vi、nano、sublimeTextまたは他のテキストエディタ)ファイルを編集してください、あなたはそれを〜/ディレクトリ(ユーザディレクトリ)に見つけて、このように設定することができます:

export MY_VAR=[your value here]

javaホームの例:

export Java_HOME=/Library/Java/JavaVirtualMachines/current

保存してターミナルに戻ります。

あなたはそれをリロードすることができます:

source .profileまたは端末ウィンドウを閉じる/開く。

1
francois.robert

Bashの場合は、環境変数を/etc/profileファイルに追加して、すべてのユーザーが利用できるようにします。再起動する必要はありません。新しいターミナルセッションを開始するだけです。

1
Rabi