在Yosemite中修改像PATH这样的环境变量的正确方法是什么?
这是Setting environment variables in OS X?这个问题,但特别针对优胜美地,因为它不再适用。
答案 0 :(得分:3)
您是否尝试过编辑~/.bash_profile
?
将这样的行添加到bash_profile
应该这样做:
export PATH = / usr / local / bin:$ PATH
答案 1 :(得分:2)
你使用的是什么外壳?我假设你正在使用默认的Bash shell。还有Csh,Ksh和Zsh。
默认情况下,Mac OS X上的Terminal.app
会在每次打开窗口时启动一个新的登录 shell。这意味着当您打开新的终端窗口时,始终会执行$HOME/.bash_profile
或$HOME/profile
。您可以在此处设置特定默认值。例如,我设置了PS1
和set -o vi
。
注意:如果您正在使用
xterm
等其他终端应用,则情况可能并非如此。这些打开新的终端窗口就像新的炮弹一样。这意味着在您注销并重新登录之前,您可能看不到.bash_profile
中所做的更改。您可以尝试修改
$HOME/.bashrc
并查看是否有帮助。其他炮弹怎么样?
如果您正在使用Kornshell(
ksh
),则需要修改$HOME/profile
而不是$HOME/.bash_profile
。如果你正在使用Zshell(zsh
),那么你自己就可以了。在这里描述它太古怪了。阅读zsh
的联机帮助页并搜索ZDOTDIR
。
运行shell脚本时,会执行$HOME/.bashrc
。大多数人在.bash_profile
中添加了这样的内容,因此他们的.bashrc
设置包含在新的终端窗口中:
[[ -x $HOME/.bashrc ]] && source "$HOME/.bashrc"
有些人设置了他们在运行shell脚本时要设置的内容,例如export $PS4="\$LINENO> "
。
$PATH
有点不同。您可以在.bash_profile
中设置它(我不会在.bashrc
中设置它),但是,Mac OS X在系统范围路径设置方面有自动化原因。名为/etc/paths
的文件用于通过/usr/libexec/path_helper
程序为使用Bash或Kornshell的所有用户设置默认路径。
在我的Mac上,我将$PATH
设置为:
/usr/local/bin:/usr/share/bin:/bin:/usr/bin:/usr/sbin:/sbin:$HOME/bin
当我安装程序时,我通常会在/opt
下安装它们。然后,我将他们的二进制文件(它们放置在哪里)链接到/usr/local/bin
。这样,我就不必继续构建我的PATH了。另外,它允许我覆盖系统默认值。例如,/usr/bin/git
为1.9.3。而我安装的/usr/local/bin/git
版本为2.2.1。
您不应该做的一件事是修改/etc/profile
,因为在OS X升级时可能会替换更改。
答案 2 :(得分:1)
问题不在于设置和从/ bin / bash或/ bin / sh中访问的环境变量,而是应该为未从shell执行的程序设置envars;即从Dock或Finder执行的普通应用程序。
在小牛队最终使用launchctl解决问题后,Apple正在重新改变事态。 launchctl的有用子命令现在标记为"遗留子命令" ,其中一些不再受支持。这给其他人留下了问号。
在任何情况下,最重要的子命令目前仍然可用。
launchctl允许设置用户进程执行的整体环境。整个用户环境似乎都是由所有终端进程继承的;即导出所有setenv变量。确认这一点有点棘手。在任何情况下,您仍然需要.profile和.bashrc来定义launchctl不支持的函数和别名。
我会尽一切努力确保我的所有launchctl变量也在我的个人资料中定义。这使我能够在远程或VM linux系统上设置相同的环境,只需进行一些小的调整。
我的设置中的Al描述为in this blog post。
答案 3 :(得分:0)