首页 文章

在OS X上设置环境变量

提问于
浏览
796

在OS X中修改PATH等环境变量的正确方法是什么?

我在Google上看了一下,发现了三个不同的文件要编辑:

  • / etc / paths

  • ~ / .profile

  • ~ / .tcshrc

我不确定.tcshrc是错误的,因为OS X现在使用bash . 这些变量,尤其是PATH,在哪里定义?

我正在跑OS X v10.5(豹) .

30 回答

  • 2

    在追逐Environment Variables preference pane并发现链接被破坏并且苹果's site seems to indicate they'上的搜索被遗忘之后......我开始回到难以捉摸的启动过程的轨迹上 .

    在我的系统(Mac OS X 10.6.8)上,似乎environment.plist中定义的变量可靠地导出到从Spotlight启动的应用程序(通过launchd) . 我的麻烦是这些变量没有被导出到终端中的新bash会话 . 即我有与此处描述的相反的问题 .

    注意:environment.plist看起来像JSON,而不是XML,如前所述

    我能够通过editing ~/MacOSX/environment.plist and 获得Spotlight应用程序以查看变量我通过将以下内容添加到我的.profile文件中,可以将相同的变量强制转换为新的终端会话:

    eval $(launchctl export)
    
  • 21

    这很简单:

    编辑〜/ .profile并将变量放在下面

    $ vim~ / .profile

    在文件中:

    MY_ENV_VAR =值

    • 保存(:wq)

    • 重新启动终端(退出并再次打开)

    • 确保一切正常:

    $ echo $ MY_ENV_VAR $ value


  • 10

    除了建议的方法之外,还有一点需要注意的是,至少在OS X 10.5(Leopard)中, launchd.conf 中设置的变量将与 .profile 中的设置合并 . 我想这也可能对 ~/.MacOSX/environment.plist 中的设置有效,但我还没有验证 .

  • 10

    来自单一来源的命令行和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"
    

    我们需要一个启动代理,它将在每次登录时随时随地运行,并将这些变量加载到用户会话 . 我们还需要一个shell脚本来解析这些定义并构建由代理执行的必要命令 .

    ~/Library/LaunchAgents/ 目录中创建一个带有 plist 后缀(例如,名为 osx-env-sync.plist )的文件,其中包含以下内容:

    <?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 .

    现在,shell脚本 . 使用以下内容在 ~/.osx-env-sync.sh 创建它:

    grep export $HOME/.bash_profile | while IFS=' =' read ignoreexport envvar ignorevalue; do
      launchctl setenv ${envvar} ${!envvar}
    done
    

    确保shell脚本是可执行的:

    chmod +x ~/.osx-env-sync.sh
    

    现在,加载当前会话的启动代理:

    launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
    

    (重新)启动GUI应用程序并验证它是否可以读取环境变量 .

    设置是持久的 . 它将在重新启动和重新运行后继续存在 .

    在初始设置之后(您刚刚进行了设置),如果您希望再次将 ~/.bash_profile 中的任何更改反映到整个环境中,请重新运行 launchctl load ... 命令赢得't perform what you want; instead you' ll会收到如下警告:

    <$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)而言 .

  • 2

    这很简单,编辑.profile(vi,nano,sublimeText或其他文本编辑器)文件,你可以在〜/ directory(用户目录)找到它并设置如下:

    export MY_VAR=[your value here]

    例如java home:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/current

    保存并返回终端 .

    您可以使用以下命令重新加载:

    source .profile 或关闭/打开终端窗口 .

  • 2

    有时,以前的所有答案都不起作用 . 如果你想在Eclipse或IntelliJ IDEA中访问系统变量(如 M2_HOME ),在这种情况下,对我来说唯一有用的是:

    首先(步骤1)编辑 /etc/launchd.conf 以包含如下所示的行:"setenv VAR value"然后(步骤2)重新启动 .

    简单地修改.bash_profile是行不通的,因为在OS X中应用程序不像其他Unix那样启动;它们不会继承父级的shell变量 . 所有其他修改都不适用于我不知道的原因 . 也许其他人可以澄清这一点 .

  • 1

    虽然这里的答案并非“错误”,但我将添加另一个:永远不要在OS X中对环境变量进行更改,这些更改会影响“所有进程”,甚至在shell外部,对于给定用户以交互方式运行的所有进程 .

    根据我的经验,对于所有进程的环境变量(如PATH)的全局更改甚至更可能破坏OS X而不是Windows . 原因是,许多OS X应用程序和其他软件(包括,特别是OS本身的组件)依赖于UNIX命令行工具,并假设系统提供的这些工具的版本行为,以及这样做时不一定使用绝对路径(类似的注释适用于动态加载的库和DYLD_ *环境变量) . 例如,考虑一下有关替换OS X提供的解释器版本(如Python和Ruby)的各种Stack Overflow问题的最高评级答案通常会说“不要这样做” .

    在这方面,OS X与其他类UNIX操作系统(例如Linux,FreeBSD和Solaris)没有什么不同;苹果公司没有提供简单方法的最可能原因是因为它打破了局面 . 由于以下两点原因导致Windows失败:(1)Windows软件没有改变新版Windows动态加载的行为,以限制"global"配置选项(如PATH)的影响 .

    “Lame”与否,如果将此类更改限制在较小的范围内,您将拥有一个更稳定的系统 .

  • 35

    在Mountain Lion上所有的 /etc/paths/etc/launchd.conf 编辑都没有任何效果!

    Apple的开发者论坛说:

    “更改.app本身的Info.plist以包含带有所需环境变量的”LSEnvironment“字典 . 不再支持〜/ .MacOSX / environment.plist . ”

    所以我直接编辑了应用程序 Info.plist (右键单击"AppName.app"(在本例中为SourceTree),然后“ Show package contents ”)

    Show Package Contents

    并添加了一个名为的新键/ dict对:

    <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

    enter image description here

    现在App(在我的情况下是SourceTree)使用给定的路径并使用git 1.9.3 :-)

    PS:当然,您必须根据特定路径需求调整Path条目 .

  • 1

    这样做非常简单快捷 . 首先从终端创建 ~/.bash_profile

    touch .bash_profile
    

    然后

    open -a TextEdit.app .bash_profile
    

    export TOMCAT_HOME=/Library/Tomcat/Home
    

    保存文件,你就完成了 .

  • 1

    对于Bash,请尝试将环境变量添加到文件 /etc/profile ,以使其可供所有用户使用 . 无需重启,只需启动新的终端会话即可 .

  • 47

    简明扼要地说明每个文件的用途

    每次启动Terminal.app时都会获取

    • ~/.profile

    • ~/.bashrc 是"traditionally"设置了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)"
    
  • 3

    就像Matt Curtis给出的答案一样,我通过launchctl设置环境变量,但是我将它包装在一个名为export的函数中,这样每当我在.bash_profile中导出一个像normal一样的变量时,它也会被launchctl设置 . 这是我做的:

    • 我的.bash_profile只包含一行,(这只是个人偏好 . )
    source .bashrc
    
    • 我的.bashrc有这个:
    function export()
    {
        builtin export "$@"
        if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
        then
            launchctl setenv "${@%%=*}" "${@#*=}"
        elif [[ ! "${@//[^ ]/}" ]]
        then
            launchctl setenv "${@}" "${!@}"
        fi
    }
    
    export -f export
    
    • 以上将使Bash内置“导出”超载并将正常导出所有内容(你会注意到我用它导出“导出”!),然后通过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 getenv myVar 感兴趣,更改.bash_profile / .bashrc中的内容,关闭终端窗口并重新打开它,再次使用launchctl检查变量,然后改变它 .

    • 同样,与后山狮世界的其他解决方案一样,对于可用于应用的任何新环境变量,您需要在更改后启动或重新启动它们 .

  • 245

    布鲁诺正好走上正轨 . 我做了大量的研究,如果你想设置所有GUI应用程序中可用的变量,你唯一的选择是 /etc/launchd.conf .

    请注意environment.plist does not work for applications launched via Spotlight. This is documented by Steve Sexton here .

    • 打开终端提示

    • 键入 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应用程序中使用 .

  • 17

    IOS上的所有Magic只能使用 source 与文件一起导出ENV-Variables .

    For Example:

    您可以像这样创建一个文件:

    export bim=fooo
    export bom=bar
    

    将此文件另存为 bimbom.env ,然后执行 source ./bimbom.ev Voilá,即可获得ENV-Variables .

    检查它们: echo $bim

  • 3

    在Mac OS上设置PATH环境变量

    打开终端程序(默认位于Applications / Utilites文件夹中) . 执行以下命令touch~ / .bash_profile; open~ / .bash_profile这将在您的默认文本编辑器中打开该文件 .

    For ANDROID SDK as example :

    您需要添加Android SDK平台工具和工具目录的路径 . 在我的示例中,我将使用“/ Development / android-sdk-macosx”作为安装SDK的目录 . 添加以下行:

    export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools
    

    保存文件并退出文本编辑器 . 执行.bash_profile以更新PATH .

    source ~/.bash_profile
    

    现在每次打开终端程序时,PATH都会包含Android SDK .

  • 14

    对于单个用户修改,请使用列出的 ~/.profile . 以下链接说明了Bash读取不同文件的时间 .

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

    如果要为gui应用程序设置环境变量,则需要〜/ .MacOSX / environment.plist文件

  • 618

    Up to and including OS X v10.7 (Lion) 您可以将它们设置为:

    ~/.MacOSX/environment.plist
    

    看到:

    对于终端中的PATH,您应该能够在 .bash_profile.profile 中设置(您可能必须创建它)

    For OS X v10.8 (Mountain Lion) and beyond you need to use launchd and launchctl .

  • 56

    另一个免费的开源Mac OSX Mountain Lion(10.8)首选项窗格/ environment.plist解决方案是EnvPane .

    EnvPane的source code可在Github上找到 . EnvPane看起来具有与RCEnvironment类似的功能,但是,似乎它可以立即更新其存储的变量,即无需重启或登录,这是受欢迎的 .

    正如开发人员所说:

    EnvPane是Mac OS X 10.8(Mountain Lion)的首选项窗格,可让您为图形和终端会话中的所有程序设置环境变量 . 它不仅可以恢复对Mountain Lion中〜/ .MacOSX / environment.plist的支持,还可以立即发布您对环境的更改,而无需注销并重新登录 . <SNIP> EnvPane包括(并自动安装)在登录后早期运行1)的launchd代理和2)每当〜/ .MacOSX / environment.plist发生更改时 . 代理读取〜/ .MacOSX / environment.plist,并通过launchctl setenv和launchctl unsetenv使用的相同API将该文件中的环境变量导出到当前用户的launchd实例 .

    免责声明:我与开发人员或他/她的项目没有任何关系 .

    附:我喜欢这个名字(听起来像'Ends Pain') .

  • 1

    好吧,我不确定 /etc/paths~/.MacOSX/environment.plist 文件 . 那是新的 .

    但是对于Bash,你应该知道 .bashrc 是在每次新的shell调用时执行的, .bash_profile 只在启动时执行一次 .

    我不知道Mac OS X的频率是多少 . 我认为这种区别已经打破了窗口系统启动一切 .

    就个人而言,我通过创建一个包含我需要的所有内容的 .bashrc 文件来消除混淆,然后执行:

    ln -s .bashrc .bash_profile
    
  • 10

    更新(2017-08-04)

    截至(至少)macOS 10.12.6(Sierra),此方法似乎已停止为Apache httpd工作(对于 launchctl configsystemuser 选项) . 其他程序似乎没有受到影响 . 可以想象这是httpd中的一个错误 .

    原始答案

    这涉及OS X 10.10(10.11特别是由于无根模式,其中 /usr/bin 不再可写) .

    我已经在多个地方读过,使用 launchctl setenv PATH <new path> 设置 PATH 变量因OS X中的错误而无效(从个人经验来看似乎是真的) . 我发现还有另一种方法可以为未从shell启动的应用程序设置 PATH

    sudo launchctl config user path <new path>
    

    launchctl手册页中记录了此选项:

    配置系统| user参数值设置launchd(8)域的持久配置信息 . 只能配置系统域和用户域 . 持久存储的位置是实现细节,只应通过此子命令对该存储进行更改 . 通过此子命令进行的更改需要重新启动才能生效 . [...] path将目标域中所有服务的PATH环境变量设置为字符串值 . 字符串值应符合environ(7)中PATH环境变量的轮廓格式 . 请注意,如果服务指定了自己的PATH,则特定于服务的环境变量将优先 . 注意:此工具不能用于为域中的所有服务设置常规环境变量 . 出于安全原因,故意将其范围限定为PATH环境变量而不是其他任何内容 .

    我已经确认这可以使用从Finder启动的GUI应用程序(使用 getenv 来获取PATH) . 请注意,您只需执行一次此操作,并且更改将在重新启动后保持不变 .

  • 104

    Login Shells

    /etc/profile
    

    shell首先执行/ etc / profile中的命令 . 使用root权限的用户可以设置此文件,以便为运行bash的用户 Build 系统范围的默认特征 .

    .bash_profile 
    .bash_login 
    .profile
    

    接下来,shell按顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile(〜/是您的主目录的简写),执行它找到的第一个文件中的命令 . 您可以将命令放在其中一个文件中,以覆盖/ etc / profile中设置的默认值 . 在虚拟终端上运行的shell不会在这些文件中执行命令 .

    .bash_logout
    

    当您注销时,bash会执行〜/ .bash_logout文件中的命令 . 此文件通常包含在会话后清理的命令,例如删除临时文件的命令 .

    Interactive Nonlogin Shells

    /etc/bashrc
    

    虽然没有直接调用bash,但很多〜/ .bashrc文件调用/ etc / bashrc . 此设置允许使用root权限的用户为非登录bash shell Build 系统范围的默认特征 .

    .bashrc
    

    交互式非登录shell在〜/ .bashrc文件中执行命令 . 通常,登录shell的启动文件(例如.bash_profile)运行此文件,因此login和nonlogin shell都运行.bashrc中的命令 .

    Because commands in .bashrc may be executed many times, and because subshells inherit exported variables, it is a good idea to put commands that add to existing variables in the .bash_profile file.

  • 15

    $PATH 变量也受 path_helper 的约束,后者又使用 /etc/paths 中的 /etc/paths 文件和文件 .

    可以在此处找到更全面的描述:http://hea-www.harvard.edu/~fine/OSX/path_helper.html

  • 8

    1 .

    vim ~/.bash_profile
    

    该文件可能不存在(如果没有,您可以创建它) .

    2.在此输入并保存文件:

    export PATH=$PATH:YOUR_PATH_HERE
    

    3.run

    source ~/.bash_profile
    
  • 3

    /etc/launchd.conf未在Yosemite,El Capitain或(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 中设置的环境变量 . (就我而言,我需要将 LANG 设置为 en_US.UTF-8 ,以获取Sublime Text插件 . )

  • 3

    在OS X中处理环境变量时,基本上有两个问题需要解决 . 第一个是从Spotlight调用程序(Mac菜单/状态栏右侧的放大镜图标),第二个是从Dock调用程序时 . 从终端应用程序/实用程序调用程序是微不足道的,因为它从标准shell位置读取环境( ~/.profile~/.bash_profile~/.bashrc 等)

    从Dock调用程序时,请使用 ~/.MacOSX/environment.plist ,其中 <dict> 元素包含一系列 <key>KEY</key><string>theValue</string> 元素 .

    从Spotlight调用程序时,请确保已使用所需的所有键/值设置设置launchd .

    要同时解决这两个问题,我在用户帐户上使用登录项(通过“系统首选项”工具设置) . 登录项是一个调用Emacs lisp函数的bash脚本,尽管当然可以使用他们喜欢的脚本工具来完成同样的事情 . 这种方法具有额外的好处,它可以随时工作,不需要重新启动,即可以编辑 ~/.profile ,在某个shell中运行登录项,并从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设施)的设置放入单独的脚本 .

  • 5

    任何Bash启动文件 - ~/.bashrc~/.bash_profile~/.profile . 对于GUI应用程序中的环境变量,还有一些名为 ~/.MacOSX/environment.plist 的奇怪文件 .

  • 3

    如何为Spotlight启动的新进程设置环境(无需重启)

    您可以使用 launchctl setenv 设置launchd(以及扩展名,从Spotlight开始的任何内容)使用的环境 . 例如,设置路径:

    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
    

    There's no need to reboot 虽然您需要重新启动应用程序,如果您希望它能够获取更改的环境 .

    这包括已经在Terminal.app下运行的所有shell,但如果你在那里,你可以更直接地设置环境,例如用 export PATH=/opt/local/bin:/opt/local/sbin:$PATH 表示bash或zsh .

    重启后如何保持更改

    keep changes after a reboot ,您可以从 /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
    

    您可以通过命令 man launchctl 找到有关 launchctl 以及如何加载 launchd.conf 的更多信息 .

  • 13

    这是一个非常简单的方法来做你想要的 . 在我的情况下,它正在 gradle 工作( Android Studio

    • 打开终端 .

    • 运行以下命令:

    sudo nano /etc/pathssudo 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

    我希望能帮助别人

  • 16

    我认为OP正在寻找一种简单的,类似Windows的解决方案 .

    干得好:

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

  • 7

    这里有两种类型的贝壳 .

    • 非登录:每次启动bash的新副本时都会重新加载.bashrc

    • 登录:.profile仅在您登录时加载,或者明确告诉bash加载它并将其用作登录shell .

    重要的是要理解,使用bash .bashrc只能由一个既可以进行交互也可以进行非登录的shell读取,你会发现人们经常在.bash_profile中加载.bashrc来克服这个限制 .

    既然您已经掌握了基本知识,那么我们将继续讨论如何建议您进行设置 .

    • .profile:创建它不存在 . 将PATH设置放在那里 .

    • .bashrc:如果不存在则创建 . 将所有别名和自定义方法放在那里 .

    • .bash_profile:如果不存在则创建 . 把以下内容放在那里 .

    .bash_file:

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

相关问题