关于macos:在OS X上设置环境变量

Setting environment variables on OS X

在OS X中修改环境变量(如path)的正确方法是什么?

我看了一下谷歌,发现有三个不同的文件需要编辑:

  • /ETC/PATH
  • ~/轮廓
  • ~/.TCHSCRC

我甚至没有这些文件中的一些,而且我很确定.tcshrc是错误的,因为OS ;X现在使用bash。这些变量,特别是路径,是在哪里定义的?

我正在运行OS X V10.5(Leopard)。


布鲁诺是一个正确的轨道。我已经做了广泛的研究,如果你想设置的变量是可用在所有的GUI应用程序,你是一只/etc/launchd.conf选项。

请注意,如果应用程序不工作environment.plist聚光灯发射的轨道。这是Steve Sexton)在诊断。

  • 提示开放式终端

  • (请注意:本文件sudo vi /etc/launchd.conf型可能存在尚未)

  • 把以下内容的文件的类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # 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的GUI应用程序启动路径和其他你的聚光灯下。


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

    您可以使用launchctl setenv设置launchd使用的环境(并且,通过扩展,任何从聚光灯开始的环境)。例如,要设置路径:

    1
    launchctl setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

    或者,如果要在.bashrc或类似文件中设置路径,请将其镜像到launchd中:

    1
    2
    PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
    launchctl setenv PATH $PATH

    不需要重新启动,但如果您希望应用程序恢复已更改的环境,则需要重新启动应用程序。

    这包括已经在terminal.app下运行的任何shell,但是如果您在那里,您可以更直接地设置环境,例如使用export PATH=/opt/local/bin:/opt/local/sbin:$PATHfor bash或zsh。

    如何在重新启动后保留更改

    要在重新启动后保留更改,可以从/etc/launchd.conf设置环境变量,如下所示:

    1
    setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

    当您重新启动时,将自动执行launchd.conf

    如果希望这些更改现在生效,则应使用此命令重新处理launchctl.conf(感谢@mkelement提供提示!)

    1
    egrep -v '^\s*#' /etc/launchd.conf | launchctl

    您可以了解更多关于launchctl的信息,以及它如何使用命令man launchctl加载launchd.conf


    到X和包括 ; ;Lion(狮子):你可以设置他们在

    1
    ~/.MacOSX/environment.plist

    国有企业:

    • https://"/图书馆/免费/ / / _ index.html qa1067 QA
    • http://免费/图书馆/内容/文件下载/ / / / / environmentvars.html bpruntimeconfig用品概念

    如果在终端的路径,你应该能够设置在.bash_profile.profile(你可能要创建它,虽然)

    X的 ; ;Mountain Lion(狮子山)和超越,你需要使用launchdlaunchctl


    单一来源的命令行和GUI应用程序解决方案(与Yosemite&el Capitan合作)

    假设您的~/.bash_profile中有环境变量定义,如下所示:

    1
    2
    3
    4
    5
    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的文件,内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?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>
     
        <string>bash</string>
        <string>-l</string>
        <string>-c</string>
        <string>
          $HOME/.osx-env-sync.sh
        </string>
      </array>
      <key>RunAtLoad</key>
      <true/>
    </dict>
    </plist>

    -l参数在这里非常重要;有必要使用登录shell执行shell脚本,以便在执行此脚本之前首先获得~/.bash_profile的源代码。

    现在是shell脚本。在~/.osx-env-sync.sh创建,内容如下:

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

    确保shell脚本是可执行的:

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

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

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

    (re)启动一个GUI应用程序并验证它是否可以读取环境变量。

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

    在初始设置之后(您刚才做的),如果您想再次反映您的~/.bash_profile中对整个环境的任何更改,重新运行launchctl load ...命令将不会执行您想要的操作;相反,您将收到如下警告:

    <$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress

    为了在不经过注销/登录过程的情况下重新加载环境变量,请执行以下操作:

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

    最后,确保重新启动已经运行的应用程序(包括terminal.app),让它们知道这些更改。

    我还将代码和解释推送到了一个github项目:osx env sync。

    我希望这将是最终的解决方案,至少对于最新版本的OSX(Yosemite&el Capitan)。


    1。

    1
    vim ~/.bash_profile

    文件可能不存在(如果不存在,您可以创建它)。

    2.输入并保存文件:

    1
    export PATH=$PATH:YOUR_PATH_HERE

    3.运行

    1
    source ~/.bash_profile


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

    从Dock调用程序时,使用~/.MacOSX/environment.plist。其中元素包含KEYtheValue元素。

    从Spotlight调用程序时,请确保已启动使用所需的所有键/值设置进行设置。

    为了同时解决这两个问题,我使用一个登录项(通过系统首选项工具)。登录项是一个bash脚本,调用EmacsLisp函数,尽管当然可以使用它们最喜欢的脚本工具来完成同样的事情。这种方法它在任何时候都可以工作并且不需要重新启动,即可以编辑~/.profile,在一些shell中运行登录项,并在Dock或Spotlight中为新调用的程序显示更改。

    细节:

    登录项目:~/bin/macosx-startup

    1
    2
    #!/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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    ;;; 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>
    "
    ))
        (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>
    "
    )
          (insert"  <string>" value"</string>
    "
    )

          ;; 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。

    在GitHub上提供envPane的源代码。envpane看起来像具有与rcenvironment类似的功能,但是,它似乎可以立即更新其存储变量,也就是说,不需要重新启动或登录,这是受欢迎的。

    如开发商所述:

    EnvPane is a preference pane for Mac OS X 10.8 (Mountain Lion) that
    lets you set environment variables for all programs in both graphical
    and terminal sessions. Not only does it restore support for
    ~/.MacOSX/environment.plist in Mountain Lion, it also publishes your
    changes to the environment immediately, without the need to log out
    and back in.

    EnvPane includes (and automatically installs) a
    launchd agent that runs 1) early after login and 2) whenever the
    ~/.MacOSX/environment.plist changes. The agent reads
    ~/.MacOSX/environment.plist and exports the environment variables from
    that file to the current user's launchd instance via the same API that
    is used by launchctl setenv and launchctl unsetenv.

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

    P.S.我喜欢这个名字(听起来像"结束痛苦")。


    山上的狮子,/etc/paths/etc/launchd.conf编辑不带任何T效应!!!!!!! </P >

    苹果公司的开发forums说: </P >

    "Change the Info.plist of the .app itself to contain an"LSEnvironment"
    dictionary with the environment variables you want.

    ~/.MacOSX/environment.plist is no longer supported."

    所以我直接到编辑的"应用程序"页Info.plist(右键单击"是"appname.app"(在这个案例sourcetree),然后"Show package contents") </P >

    Show Package Contents </P >

    一个新的和附加的键/词典对被称为: </P >

    1
    2
    3
    4
    5
    <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文件在苹果(Apple) </P >

    enter image description here </P >

    现在的应用程序(在我的案例sourcetree)使用在给定的路径和厂(NEA)的分述: </P >

    PS:当然你要调整的路径进入你的特异性路径的需要。 </P >


    虽然这里的答案不是"错误的",但我还要补充一点:对于给定用户交互运行的所有进程,不要在OS X中进行影响"所有进程"的环境变量更改,甚至在shell外部也不要对其进行更改。

    根据我的经验,对环境变量(如所有进程的路径)的全局更改甚至比在Windows上更可能破坏OS X上的内容。原因是,许多OS X应用程序和其他软件(尤其是操作系统本身的组件)都依赖于引擎盖下的Unix命令行工具,并假定这些工具的版本与系统一起提供,这样做时不必使用绝对路径(类似的注释适用于动态加载的库和dyld_x环境变量)。例如,考虑一下,对于各种关于替换OSX提供的解释程序版本(如python和ruby)的堆栈溢出问题,最高级别的答案通常会说"不要这样做"。

    在这方面,OS X与其他类似Unix的操作系统(如Linux、Freebsd和Solaris)没有什么不同;苹果之所以没有提供一种简单的方法来实现这一点,最可能的原因是它破坏了一切。从某种程度上说,Windows不太容易出现这些问题,这是由于以下两个原因:(1)Windows软件不像Unix软件那样依赖命令行工具;(2)Microsoft对"dll hell"和影响所有进程的安全问题有着如此广泛的历史记录,它们已经改变了在较新的Windows版本中动态加载的行为,以限制"全局"配置选项(如路径)的影响。

    "跛脚"或不是,如果你把这种变化限制在更小的范围内,你将有一个更稳定的系统。


    有时所有的先前的回答就是不工作。如果你想有一个访问系统变量(如M2_HOMEIntelliJ IDEA或Eclipse)中的唯一的事就是为我工作在这个案例一:

    第一(步骤1)到地图的编辑/etc/launchd.conf包含像这样的:"setenv VaR值",然后重新启动(步骤2)。

    简单的修改.bash _轮廓不会工作,因为在他们的应用中的 ;X是不是在其他的UNIX入门的了;他们不继承父’s的shell变量。所有其他的修改将不会为工作的原因是未知的我。也许别人可以澄清关于这个。


    更新(2017-08-04)

    从(至少)MacOS 10.12.6(Sierra)开始,这种方法似乎已经停止适用于Apache HTTPD(对于systemlaunchctl configuser选项)。其他节目似乎没有受到影响。可以想象这是httpd中的一个bug。

    原始答案

    这涉及到OS X 10.10+(10.11+,特别是由于/usr/bin不再可写的无根模式)。

    我在很多地方读到,使用launchctl setenv PATH 设置PATH变量由于OS X中的错误(从个人经验来看似乎是正确的)而不起作用。我发现有另一种方法可以为不是从shell启动的应用程序设置PATH

    1
    sudo launchctl config user path <new path>

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

    config system | user parameter value

    Sets persistent configuration information for launchd(8) domains. Only the system domain and user domains may be configured. The location of the persistent storage is an
    implementation detail, and changes to that storage should only be made through this subcommand. A reboot is required for changes made through this subcommand to take effect.

    [...]

    path

    Sets the PATH environment variable for all services within the target domain to the string value. The string value should conform to the format outlined for the
    PATH environment variable in environ(7). Note that if a service specifies its own PATH, the service-specific environment variable will take precedence.

    NOTE: This facility cannot be used to set general environment variables for all services within the domain. It is intentionally scoped to the PATH environment vari-
    able and nothing else for security reasons.

    < /块引用>< /块引用>

    我已经确认这与一个从finder开始的GUI应用程序(它使用getenv来获取路径)一起工作。请注意,您只需要这样做一次,并且更改将通过重新启动而持久。


    在搜索完环境变量首选项窗格并发现链接被破坏后,在苹果网站上搜索似乎表明他们已经忘记了它…我又回到了难以捉摸的发射过程。

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

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

    通过编辑~/macosx/environment.plist和通过将以下内容添加到.profile文件中,我可以将相同的var强制到新的终端会话中:

    1
    eval $(launchctl export)


    这是一个非常简单的方式来做什么是你想要的。在我的情况下,它被越来越gradle工作(Android Studio) </P >

    • 开放的终端。
    • 运行下面的命令: </P >

      sudo nano /etc/pathssudo vim /etc/paths </P >

    • 输入你的密码,当prompted。。。。。。。 </P >

    • 去"的文件,和回车键的路径添加到你的愿望。
    • HIT Control-X退出"。
    • 回车键"Y"保存到改性后的缓冲区。
    • 一种新的开放型:当时的终端窗口 </P >

      echo $PATH </P >

    你应该看到新的路径appended到终点的路径 </P >

    是的,我有这些细节,从这个帖子: </P >

    http:/ / / / architectryan.com 2012年2月10日添加到该路径是Mac OS X狮子山/ # .uked3rxpp3q </P >

    我希望这可以帮助其他的人 </P >


    多样的答案马特柯蒂斯送,设定环境变量,通过launchctl,但我的包在一个函数被称为口,所以,只要我一口可变类平均在我的.bash _轮廓,它是由launchctl集也。这里是我是什么做的: </P >

  • 我的.bash _简介主要由solely一行,(这是我个人的偏好。) </P >

    1
    source .bashrc
  • 我的.bashrc有这样的: </P >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function export()
    {
        builtin export"$@"
        if [[ ${#@} -eq 1 &&"${@//[^=]/}" ]]
        then
            launchctl setenv"${@%%=*}""${@#*=}"
        elif [[ !"${@//[^ ]/}" ]]
        then
            launchctl setenv"${@}""${!@}"
        fi
    }

    export -f export
  • 在以上的bash会超负荷的内建的"口"和"一切将口normally(你会通知我"口口"与它!)然后,他们用恰当的集OS X的应用程序环境,通过launchctl,无论你使用的任何部下面的: </P >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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 _简介/ .bashrc弹出式的方式,我想。开放的一个终端窗口,检查出你的环境变量y-o-u-r-e interested在与launchctl getenv myVar,变化的东西在你的.bash _简介/ .bashrc的终端窗口,关闭和重新打开它,再次检查该变量与launchctl,瞧,它的改变了。 </P >

  • 又来了,像其他的解决方案的后山狮子的世界,任何新的环境变量的方法是可用的应用程序,你需要的发射或特写:它们在变化。 </P >


  • 在bash启动任何文件~/.bashrc~/.bash_profile~/.profile——,,。。。。。。。也有一些奇怪的文件排序(《~/.MacOSX/environment.plist环境变量在图形用户界面(GUI)的应用程序。


    我认为OP正在寻找一个简单的、类似Windows的解决方案。

    干得好:

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


    简洁明了地说明每个文件的用途

    • 每次启动terminal.app时,都会获取~/.profile
    • ~/.bashrc是"传统"设置bash环境的所有导出语句的地方。
    • /etc/paths是Mac OS中的主文件,其中包含为所有用户构建路径环境变量的默认路径列表。
    • /etc/paths.d/包含包含附加搜索路径的文件

    非终端程序不会继承终端所继承的系统范围的路径和manpath变量!要为特定用户启动的所有进程设置环境,从而使环境变量可用于Mac OS X GUI应用程序,这些变量必须在您的~/.MacOSX/environment.plist中定义(Apple Technical Q&A QA1067)

    使用以下命令行将您的environment.plist/etc/paths同步:

    1
    2
    defaults write $HOME/.MacOSX/environment PATH"$(tr '
    ' ':' </etc/paths)"

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

    更详细的描述可以在这里找到:http://hea-www.harvard.edu/~fine/osx/path_helper.html


    /etc/launchd.conf不用于约塞米蒂、埃尔卡皮坦或(高)塞拉。

    launchctl手册页:

    1
    2
    /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中设置的环境变量。(在我的例子中,我需要将LANG设置为en_US.UTF-8,以获得一个出色的文本插件。)


    这是简单的: </P >

    "编辑"/ .profile和把你的变量为后续的 </P >

    $ vim ~/.profile

    在把文件: </P >

    MY_ENV_VAR=value

  • 保存(WQ) </P >

  • 重新对终端(退出和打开它了) </P >

  • 让我相信这是所有被罚款: </P >

  • $ echo $MY_ENV_VAR

    $ value


    设置你的PATH环境变量是Mac OS

    开放的终端程序(这是在你的应用程序的工具/文件夹的默认值)。 运行下面的命令 触摸~ / .bash _简介;开放~ / .bash _简介 这将打开的文件在你的默认的文本编辑器。 </P >

    for Android SDK为实例: </P >

    你需要添加的路径,你的Android SDK平台工具和工具的目录。在我的第一个实例将使用"/发展/你的Android SDK的MacOSX",为的是installed SDK目录中。添加下面的行: </P >

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

    保存文件和退出的文本编辑器。 执行你的.bash _更新你的文件的路径。 </P >

    1
    source ~/.bash_profile

    现在你everytime开放的终端程序的路径将包含在你的Android SDK。 </P >


    在单用户的使用。~/.profile修饰,你上市。下面的链接是在不同的explains文件读通过的狂欢。

    telin.ugent.be http:/ / / / / _ ~ slippens Drupal和其他被_

    如果你想设置你的GUI应用程序的环境变量是需要environment.plist文件.macosx/~/


    嗯,我不确定我们的/etc/paths~/.MacOSX/environment.plist文件。这些都是新的。

    但你应该知道与狂欢,是执行与每一个新的.bashrcshell调用在一次执行.bash_profile和仅仅是一个开始。

    我不知道这是一个经常与MAC  ; ;(i)的区分。《破晓下所有的窗口系统的发射。

    一个人,以消除混乱,.bashrc文件创建一个具有所有我需要的,然后:

    1
    ln -s .bashrc .bash_profile

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


    登录外壳

    1
    /etc/profile

    shell首先执行/etc/profile中的命令。使用根权限的用户可以设置此文件,以为运行bash的用户建立系统范围的默认特性。

    1
    2
    3
    .bash_profile
    .bash_login
    .profile

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

    1
    .bash_logout

    当您注销时,bash执行~/.bash_注销文件中的命令。此文件通常保存在会话后清理的命令,例如删除临时文件的命令。

    交互式非登录shell

    1
    /etc/bashrc

    虽然bash没有直接调用,但是许多~/.bashrc文件调用/etc/bashrc。此设置允许使用根权限的用户为非登录bash shell建立系统范围的默认特性。

    1
    .bashrc

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

    因为.bashrc中的命令可能会执行很多次,而且由于子shell继承导出的变量,所以最好将添加到.bash_配置文件中现有变量的命令放在.bash_配置文件中。


    这里有两种弹壳。

    • 非登录:.bashrc每次启动新的bash副本时都会重新加载。
    • 登录名:只有当您登录或明确告诉bash加载并将其用作登录shell时,才会加载.profile。

    重要的是要理解,在bash.bashrc中,只有交互和非登录的shell才能读取bashrc,并且您会发现人们经常加载.bashrc到.bash_配置文件中来克服这个限制。

    既然你已经有了基本的理解,让我们继续讨论我如何建议你设置它。

    • .profile:创建不存在的文件。把你的路径设置放进去。
    • .bashrc:如果不存在,则创建。把你所有的别名和自定义方法放进去。
    • .bash_profile:如果不存在,则创建。把下面的内容放进去。

    BasHyFrase:

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

    只是做得很简单很快。首先从终端创建~/.bash_配置文件:

    1
    touch .bash_profile

    然后

    1
    open -a TextEdit.app .bash_profile

    添加

    1
    export TOMCAT_HOME=/Library/Tomcat/Home

    保存文档,就完成了。


    iOS上的所有魔力都只与在文件中使用source结合使用,您可以在其中导出env变量。

    例如:

    您可以创建这样的文件:

    1
    2
    export bim=fooo
    export bom=bar

    将此文件另存为bimbom.env,并执行source ./bimbom.ev。嘿,你得到了你的env变量。

    请检查:echo $bim


    它的quite无知,编辑.profile(VI,纳米,sublimetext或其它文本编辑器)的文件,你可以发现它在~ /目录(Directory用户和样本集): </P >

    export MY_VAR=[your value here] </P >

    与Java的模具为例: </P >

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/current </P >

    它保存和返回到终端。 </P >

    你可以用它reload: </P >

    source .profileor关闭/打开你的终端窗口。 </P >


    对于bash,请尝试将环境变量添加到文件/etc/profile中,以使它们对所有用户都可用。无需重新启动,只需启动新的终端会话。