890

OS XでPATHなどの環境変数を変更する適切な方法は何ですか?

Googleを少し調べて、編集する3つの異なるファイルを見つけました。

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

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

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

4

32 に答える 32

670

ブルーノは順調に進んでいます。私は広範な調査を行いました。すべての 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。新しい変数が表示されるはずです。これらは、Spotlight を介して起動する IntelliJ IDEA やその他の GUI アプリケーションでも利用できます。

于 2009-02-25T23:42:27.430 に答える
286

〜/.launchd.confが機能することを期待しないでください

launchctlのマニュアルページには、機能しなかったと書かれています。

非推奨および削除された機能

launchctlにはインタラクティブモードがなくなり、stdinからのコマンドも受け入れられなくなりました。/etc/launchd.confファイルは、起動初期に実行されるサブコマンドについて参照されなくなりました。この機能は、セキュリティ上の理由から削除されました。ユーザーのセッションを設定する前に$HOME/ .launchd.confを参照することが文書化されていましたが、この機能は実装されていませんでした。

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ですでに実行されているすべてのシェルが含まれますが、そこにいる場合はexport PATH=/opt/local/bin:/opt/local/sbin:$PATH、bashやzshなどを使用して環境をより直接的に設定できます。

再起動後に変更を保持する方法

新しい方法(10.10ヨセミテ以降)

を使用し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.confman launchctl

于 2010-09-21T01:23:56.340 に答える
108

OS X v10.7(Lion)までは、次の場所に設定できます。

~/.MacOSX/environment.plist

見る:

.bash_profileターミナルのPATHについては、またはを設定できる必要があり.profileます(ただし、おそらく作成する必要があります)

OS X v10.8(Mountain Lion)以降では 、とを使用する必要がありlaunchdますlaunchctl

于 2008-09-25T20:08:30.547 に答える
76

単一ソースからのコマンド ライン アプリケーションと GUI アプリケーションの両方に対するソリューション ( Mac OS X v10.10 (Yosemite) およびMac OS X v10.11 (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接尾辞 (例: 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) では、これが究極のソリューションになることを願っています。

于 2015-09-04T20:06:51.913 に答える
58
  1. 行う:

    vim ~/.bash_profile
    

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

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

    export PATH=$PATH:YOUR_PATH_HERE
    
  3. 走る

    source ~/.bash_profile
    
于 2011-11-25T04:29:38.377 に答える
36

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 のみの機能) を別のスクリプトに入れようとしました。 .

于 2011-03-26T20:03:52.543 に答える
24

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

于 2013-01-15T14:04:25.993 に答える
18

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: もちろん、特定のパスのニーズに合わせてパス エントリを調整する必要があります。

于 2013-01-24T12:30:07.560 に答える
17

更新 (2017-08-04)

(少なくとも) 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 ( getenvPATH の取得に使用) から開始された GUI アプリケーションで動作することを確認しています。これを行う必要があるのは 1 回だけで、変更は再起動後も持続することに注意してください。

于 2015-10-02T07:31:35.620 に答える
15

ここでの答えは「間違っている」わけではありませんが、もう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バージョンの動的ロードの動作が変更されました。

「同じ」であろうとなかろうと、そのような変更をより小さなスコープに制限すると、はるかに安定したシステムが得られます。

于 2012-07-17T01:46:15.560 に答える
15

以前の回答がすべてうまくいかない場合があります。M2_HOMEEclipse または IntelliJ IDEA でシステム変数 ( など) にアクセスしたい場合、この場合に機能するのは次のとおりです。

最初に (ステップ 1) /etc/launchd.conf「setenv VAR value」のような行を含むように編集し、次に (ステップ 2) 再起動します。

OS X では他の Unix のようにアプリケーションが開始されないため、単に .bash_profile を変更しても機能しません。親のシェル変数を継承しません。他のすべての変更は、私には不明な理由で機能しません。たぶん、他の誰かがこれについて明確にすることができます。

于 2009-01-16T12:12:17.137 に答える
13

環境変数設定ペインを追跡し、リンクが壊れていることを発見し、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)
于 2011-07-06T23:59:07.153 に答える
11

Bashスタートアップファイルのいずれか- ~/.bashrc、、。GUIアプリケーションの環境変数にちなんで名付けられたある種の奇妙なファイルもあります。~/.bash_profile~/.profile~/.MacOSX/environment.plist

于 2008-09-25T20:08:50.857 に答える
10

これは、あなたが望むことを行うための非常に簡単な方法です。私の場合は、Gradle を動作させることでした (Android Studio の場合)。

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

    sudo nano /etc/pathsまたsudo vim /etc/paths

  • プロンプトが表示されたら、パスワードを入力します。

  • ファイルの一番下に移動し、追加するパスを入力します。
  • +をControl押しXて終了します。
  • 'Y' を入力して、変更されたバッファーを保存します。
  • 新しいターミナル ウィンドウを開き、次のように入力します。

    echo $PATH

PATH の末尾に追加された新しいパスが表示されます。

この投稿からこれらの詳細を取得しました:

Mac OS X 10.8 Mountain Lion 以降の PATH に追加

于 2013-09-24T03:24:00.180 に答える
10

Matt Curtis の回答と同じように、launchctl を介して環境変数を設定しますが、export という関数にラップして、.bash_profile で通常のように変数をエクスポートするたびに、launchctl によっても設定されるようにします。これが私がすることです:

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

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

    function export()
    {
        builtin export "$@"
        if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
        then
            launchctl setenv "${@%%=*}" "${@#*=}"
        elif [[ ! "${@//[^ ]/}" ]]
        then
            launchctl setenv "${@}" "${!@}"
        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 後の世界の他のソリューションと同様に、新しい環境変数をアプリで使用できるようにするには、変更後にそれらを起動または再起動する必要があります。

于 2014-02-27T16:53:44.623 に答える
8

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

どうぞ:

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

于 2010-12-02T14:37:51.463 に答える
7

各ファイルの目的を簡潔かつ明確にする

  • ~/.profileTerminal.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)"
于 2014-11-09T15:36:21.910 に答える
6

/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

于 2018-01-07T17:32:55.300 に答える
5

この$PATH変数は の影響も受けます。path_helperこれにより、 の/etc/pathsファイルとファイルが使用され/etc/paths.dます。

より完全な説明は、Leopard (2008-11)の PATH およびその他の環境問題にあります。

于 2012-03-22T11:16:28.733 に答える
5

これを本当に簡単かつ迅速に行いました。最初にターミナルから~/.bash_profileを作成します:

touch .bash_profile

それから

open -a TextEdit.app .bash_profile

追加

export TOMCAT_HOME=/Library/Tomcat/Home

ドキュメントを保存して完了です。

于 2014-10-08T18:56:38.637 に答える
3

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

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

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

于 2008-09-25T20:09:14.553 に答える
3

とても簡単です。ファイル.profile(vi、nanoSublime Textまたはその他のテキスト エディター) ファイルを編集します。~/ディレクトリ(ユーザーディレクトリ)で見つけて、次のように設定できます。

export MY_VAR=[your value here]

Java ホームの例:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/current

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

次の方法でリロードできます。

source .profile

または、ターミナル ウィンドウを閉じてから開きます。

于 2014-02-17T16:25:58.707 に答える
3

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

ターミナル プログラムを開きます (これはデフォルトでアプリケーション/ユーティリティ フォルダにあります)。次のコマンドを実行します

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 が含まれるようになります。

于 2013-12-19T11:54:49.450 に答える
3

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

.bashrcしかし、Bash では、新しいシェル呼び出しごとに.bash_profile実行され、起動時に 1 回だけ実行されることを知っておく必要があります。

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

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

ln -s .bashrc .bash_profile
于 2008-09-25T21:12:55.023 に答える
3

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

于 2011-02-07T00:12:17.977 に答える
3

それは簡単です:

~/.profile を編集し、次のように変数を配置します

$ vim ~/.profile

ファイルに入れます:

MY_ENV_VAR=値

  1. 保存 ( :wq )

  2. ターミナルを再起動します(終了して再度開きます)

  3. すべて問題ないことを確認してください:

$ エコー $MY_ENV_VAR

$値


于 2014-01-25T01:55:30.190 に答える
2

ここでは 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
#
于 2015-01-21T22:49:32.247 に答える
2

ログインシェル

/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ます。

于 2015-04-27T20:53:05.427 に答える
0

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

于 2011-07-10T11:31:00.727 に答える