在OS X上设置环境变量

时间:2008-09-25 20:06:48

标签: macos bash path environment-variables

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

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

  • 的/ etc /路径
  • 〜/ .profile中
  • 〜/ .tcshrc文件

我甚至没有这些文件,我很确定 .tcshrc 是错误的,因为OS X现在使用bash。这些变量,尤其是PATH,定义在哪里?

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

31 个答案:

答案 0 :(得分:640)

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

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

  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应用程序中使用。

答案 1 :(得分:253)

如何为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

无需重新启动,但如果您希望重新启动应用程序,则需要重新启动应用程序。

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

如何在重启后保持更改

重启后保持更改,您可以设置/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

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

答案 2 :(得分:105)

最多并包括OS X v10.7(狮子) ,您可以将它们设置为:

~/.MacOSX/environment.plist

请参阅:

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

适用于OS X v10.8(Mountain Lion)及其他 you need to use launchd and launchctl

答案 3 :(得分:61)

来自单一来源的命令行和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脚本来解析这些定义,并构建由代理执行的必要命令。

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参数在这里至关重要;使用登录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 ...命令将无法执行您想要的操作;相反,你会收到如下警告:

<$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&amp; El Capitan)而言。

答案 4 :(得分:49)

1

vim ~/.bash_profile

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

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

export PATH=$PATH:YOUR_PATH_HERE

3.run

source ~/.bash_profile

答案 5 :(得分:35)

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

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

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

要同时解决这两个问题,我使用登录项目(通过设置设置) 我的用户帐户上的系统偏好设置工具。登录项是一个bash脚本 调用Emacs lisp函数,虽然当然可以使用它们 最喜欢的脚本工具来完成同样的事情。这种方法 它有额外的好处,它可以随时工作,不需要 重新启动,即可以编辑~/.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内容平台独立并设置{{1将环境(仅限Mac设施)放入单独的脚本中。

答案 6 :(得分:22)

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

source code上提供了Github的EnvPane。 EnvPane看起来具有与RCEnvironment类似的功能,但是,它似乎可以立即更新其存储的变量,即没有需要重启或登录,这是受欢迎的。

正如开发人员所说:

  

EnvPane是Mac OS X 10.8(Mountain Lion)的首选项窗格   允许您以图形方式为所有程序设置环境变量   和终端会议。它不仅恢复了对它的支持   在Mountain Lion中的〜/ .MacOSX / environment.plist,它也发布你的   立即更改环境,无需注销   然后回来。
  &LT; SNIP&GT;
  EnvPane包括(并自动安装)a   在登录后早期运行的launchd代理1)2)每当运行时   〜/ .MacOSX / environment.plist更改。代理人读   〜/ .MacOSX / environment.plist并从中导出环境变量   该文件通过相同的API传递给当前用户的launchd实例   由launchctl setenv和launchctl unsetenv使用。

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

P.S。我喜欢这个名字(听起来像'Ends Pain')。

答案 7 :(得分:17)

在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

并添加了一个名为

的新密钥/字典对
<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条目。

答案 8 :(得分:16)

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

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

在这方面,OS X与其他类UNIX操作系统(例如Linux,FreeBSD和Solaris)没有什么不同;最可能的原因是Apple没有提供一种简单的方法,因为它打破了事情。在某种程度上,Windows并不容易出现这些问题,这主要归功于两件事:(1)Windows软件不像UNIX软件那样依赖命令行工具,(2)微软已经拥有“DLL地狱”这样一个广泛的历史记录和由影响所有进程的更改引起的安全问题,它们改变了新版Windows动态加载的行为,以限制“全局”配置选项(如PATH)的影响。

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

答案 9 :(得分:15)

更新(2017-08-04)

从(至少)macOS 10.12.6(Sierra)开始,此方法似乎已停止为Apache httpd工作(对于system的{​​{1}}和user选项。其他程序似乎没有受到影响。可以想象,这是httpd。

中的一个错误

原始答案

这涉及到OS X 10.10+(10.11+特别是由于无根模式导致launchctl config不再可写)。

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

PATH

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

  

配置系统|用户参数值

     
    

设置launchd(8)域的持久配置信息。只能配置系统域和用户域。持久存储的位置是                   实现细节,只应通过此子命令对该存储进行更改。通过此子命令进行的更改需要重新启动才能生效。

         

[...]

         

路径

         
      

将目标域中所有服务的PATH环境变量设置为字符串值。字符串值应符合为其概述的格式                              环境中的PATH环境变量(7)。请注意,如果服务指定了自己的PATH,则特定于服务的环境变量将优先。

             

注意:此工具不能用于为域中的所有服务设置常规环境变量。故意将其范围限定为PATH环境变量                              因安全原因而无能为力。

    
  

我已经确认这可以使用从Finder启动的GUI应用程序(使用sudo launchctl config user path <new path> 来获取PATH)。 请注意,您只需执行一次此操作,并且通过重新启动将保持更改。

答案 10 :(得分:15)

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

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

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

答案 11 :(得分:13)

追逐Environment Variables preference pane并发现链接被破坏后,Apple网站上的搜索似乎表明他们已经忘记了这一点......我开始回到难以捉摸的启动过程。

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

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

我能够通过editing ~/MacOSX/environment.plist 获取Spotlight应用以查看变量 通过将以下内容添加到我的.profile文件中,我能够将相同的vars强制进入新的终端会话:

eval $(launchctl export)

答案 12 :(得分:10)

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

答案 13 :(得分:10)

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

  1. 我的.bash_profile只包含一行,(这只是个人偏好。)

    source .bashrc
    
  2. 我的.bashrc有这个:

    function export()
    {
        builtin export "$@"
        if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
        then
            launchctl setenv "${@%%=*}" "${@#*=}"
        elif [[ ! "${@//[^ ]/}" ]]
        then
            launchctl setenv "${@}" "${!@}"
        fi
    }
    
    export -f export
    
  3. 以上会使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
    
  4. 这样我每次都不必将每个变量发送到launchctl,我可以按照我想要的方式设置我的.bash_profile / .bashrc。打开终端窗口,使用launchctl getenv myVar检查您感兴趣的环境变量,更改.bash_profile / .bashrc中的内容,关闭终端窗口并重新打开它,使用launchctl再次检查变量,以及瞧,它已经改变了。

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

答案 14 :(得分:10)

这是一种非常简单的方法来做你想要的。就我而言,它正在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

我希望能帮助别人

答案 15 :(得分:8)

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

你走了:

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

答案 16 :(得分:7)

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

    每次启动Terminal.app时都会
  • ~/.profile
  • ~/.bashrc是&#34;传统上&#34; Bash环境的所有导出语句都已设置
  • /etc/paths是Mac OS中的主文件,其中包含为所有用户构建PATH环境变量的默认路径列表
  • /etc/paths.d/包含包含其他搜索路径的文件

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

使用以下命令行将environment.plist/etc/paths

同步
defaults write $HOME/.MacOSX/environment PATH "$(tr '\n' ':' </etc/paths)"

答案 17 :(得分:5)

$PATH变量也受path_helper的约束,/etc/paths反过来使用/etc/paths.d文件和{{1}}中的文件。

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

答案 18 :(得分:4)

/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插件。)

答案 19 :(得分:3)

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

答案 20 :(得分:3)

在Mac OS上设置PATH环境变量

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

以ANDROID SDK为例:

您需要添加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。

答案 21 :(得分:3)

很简单:

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

  

$ vim~ / .profile

在文件中:

  

MY_ENV_VAR =值

  1. 保存(:wq)

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

  3. 确保一切顺利:

  4.   

    $ echo $ MY_ENV_VAR

         

    $ value


答案 22 :(得分:3)

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

但是对于Bash,您应该知道每次新的shell调用都会执行.bashrc 并且.bash_profile仅在启动时执行一次。

我不知道Mac OS X的频率是多少。我认为窗口系统启动所有内容时,区别已经破裂。

就个人而言,我通过创建一个包含我需要的所有内容的.bashrc文件来消除这种混乱:

ln -s .bashrc .bash_profile

答案 23 :(得分:3)

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

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

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

答案 24 :(得分:2)

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

touch .bash_profile

然后

open -a TextEdit.app .bash_profile

添加

export TOMCAT_HOME=/Library/Tomcat/Home

保存文档,你就完成了。

答案 25 :(得分:2)

这里有两种类型的炮弹。

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

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

现在您已经掌握了基本知识,接下来我将建议您如何设置它。

  • .profile:创建它不存在。将PATH设置放在那里。
  • .bashrc:如果不存在则创建。将所有别名和自定义方法放在那里。
  • .bash_profile:如果不存在则创建。把以下内容放在那里。

.bash_file:

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

答案 26 :(得分:2)

登录外壳

/etc/profile

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

.bash_profile 
.bash_login 
.profile

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

.bash_logout

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

互动非登录广告

/etc/bashrc

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

.bashrc

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

因为.bashrc中的命令可能会执行多次,并且因为子shell继承了导出的变量,所以最好将添加到.bash_profile文件中的现有变量的命令。

答案 27 :(得分:2)

IOS上的所有Magic仅与对文件使用source一起使用,在该文件中导出ENV变量。

例如:

您可以这样创建文件:

export bim=fooo
export bom=bar

将此文件另存为bimbom.env并执行source ./bimbom.ev Voilá,您有了ENV变量。

使用以下方法检查它们: echo $bim

答案 28 :(得分:1)

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

答案 29 :(得分:1)

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

export MY_VAR=[your value here]

例如java home:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/current

保存并返回终端。

您可以使用以下方式重新加载:

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

答案 30 :(得分:0)

我的个人做法是.bash_profile。我要在其中添加路径并追加到Path变量,

GOPATH=/usr/local/go/bin/
MYSQLPATH=/usr/local/opt/mysql@5.6/bin

PATH=$PATH:$GOPATH:$MYSQLPATH

之后,我可以使用echo $GOPATHecho$MYSQLPATHecho $PATH分别使用Path。