Mac OS X 10.9 - 设置永久环境变量

dan*_*anw 55 macos bash environment-variables osx-mavericks

如何在Mac OS X 10.9中设置永久环境变量(即每次启动新的终端会话时不需要导出的变量)?我已经找到了一些答案的有关修改我.bash_profile.profile,然而没有这些选择似乎为永久解决方案的工作-只是暂时的.我想要设置的变量是MULE_HOME.我的bash配置文件中有以下行:

export MULE_HOME=$(/opt/mule-standalone-3.4.0)
Run Code Online (Sandbox Code Playgroud)

但是,当我启动终端时,我得到以下行(不确定这是否是正常行为?):

-bash: /opt/mule-standalone-3.4.0: is a directory
Run Code Online (Sandbox Code Playgroud)

并运行一个简单的env命令返回以下内容:

TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/fc/68bqp4jj411gynj5qvwhq6z1shs1fy/T/
Apple_PubSub_Socket_Render=/tmp/launch-xKtkql/Render
TERM_PROGRAM_VERSION=326
TERM_SESSION_ID=E97BFE4B-AF85-4933-B252-0883CC085349
USER=dan
SSH_AUTH_SOCK=/tmp/launch-rEmTWW/Listeners
__CF_USER_TEXT_ENCODING=0x730C85DE:0:0
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
__CHECKFIX1436934=1
PWD=/Users/dan
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
LANG=en_GB.UTF-8
MULE_HOME=
SHLVL=1
HOME=/Users/dan
LOGNAME=danwiseman
_=/usr/bin/env
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我export MULE_HOME=/opt/mule-standalone-3.4.0每次开始新的终端会议时都要输入,虽然不费劲,但有点不方便.我在这里做错了什么导致变量只能暂时设置?提前致谢.

Cod*_*ide 45

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

touch ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

然后

open -a TextEdit.app ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

export TOMCAT_HOME=/Library/Tomcat/Home
Run Code Online (Sandbox Code Playgroud)

在TextEdit中保存文档,您就完成了.


tro*_*foe 42

删除该$(...)位,这将尝试在括号内执行命令并设置$MULE_HOME为它产生的任何内容.在你的情况下/opt/mule-standalone-3.4.0不是可执行文件,因此你得到的错误.

export MULE_HOME=/opt/mule-standalone-3.4.0
Run Code Online (Sandbox Code Playgroud)

并且~/.bashrc不要使用~/.bash_profile.

编辑:似乎意见是你应该在~/.bash_profile脚本中设置环境变量,而不是~/.bashrc脚本.

  • `.bash_profile`仅针对login-shell执行,而`.bashrc`则针对每个新shell实例执行. (3认同)
  • 谢谢@trojanfoe,这很有效.供参考 - 在`〜/ .bash_profile`上使用`〜/ .bashrc`是什么原因? (2认同)
  • 通常,环境变量在`.bash_profile`中,因为它们只需要在登录时设置一次.所有后代进程都将继承其父级的值.在OS X中,`bash`不用作初始登录过程的一部分,并且`Terminal.app`(或其他终端模拟器)进程存在于任何预先存在的`bash`会话之外,因此每个新窗口(默认情况下) )将自己视为新的登录会话. (2认同)

小智 15

MacOS 10.15 Catalina 及更高版本

如果使用 MacOS 10.15 (Catalina) 及更高版本的用户来到这里,您需要使用文件.zshenv而不是.bash_profile. 这是因为从 Catalina 开始,终端默认使用 zhs 而不是 bash。

通过以下方式永久导出路径:

  1. 创建.zshenv文件:

touch ~/.zshenv

  1. 接下来,使用以下命令打开它:

open -a TextEdit.app ~/.zshenv

  1. 以这种格式输入您想要执行的导出:

export NAME=path 前任:export PICO_SDK_PATH=/Users/[redacted]/Developer/pico-sdk