在Mac OS X 10.9中如何设置永久环境变量(即不需要在每次启动新的终端会话时导出)?我找到了一些有关修改我的.bash_profile和.profile的答案,但是这些选项似乎都不能成为永久解决方案-只有临时的解决方案。我要设置的变量是MULE_HOME。我在我的bash配置文件中有以下行:
为了解决这个问题,我目前每次启动新的终端会话都需要打字输入
export MULE_HOME=$(/opt/mule-standalone-3.4.0)
然而,当我启动终端时,我会看到以下行(不确定这是否是正常行为?):
-bash: /opt/mule-standalone-3.4.0: is a directory
执行简单的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
为了解决这个问题,我目前每次启动新的终端会话都需要打字输入
export MULE_HOME=/opt/mule-standalone-3.4.0
,虽然不是很劳累,但有点不方便。我在这里做错了什么,导致变量只能临时设置?
~/.bashrc
而不是~/.bash_profile
的原因是什么? - danw.bash_profile
仅在登录 shell 时执行,而.bashrc
在每个新的 shell 实例中执行。 - trojanfoe.bash_profile
文件中,因为它们只需要在登录时设置一次。所有子进程都会继承它们的值。在OS X系统中,bash
不是初始登录过程的一部分,而且Terminal.app
(或其他终端仿真器)进程存在于任何现有的bash
会话之外,因此每个新窗口(默认情况下)都将自己视为一个新的登录会话。 - chepner/.bash_profile文件,因此您不能依赖该行存在(显然,即使最初存在,也不能保证以后会存在)。使用`/.bash_profile是稳健的选择。重点是OSX不会自动为所有交互式bash实例源
/.bashrc/.bashrc,而且一些OSX用户可能根本不使用
。如果您仍然想推荐使用它,请更新您的答案明确说明先决条件:在
~/.bash_profile中存在行
[ -f ~/.bashrc ] && . ~/.bashrc`。 - mklement0