在 OS X 10.6 Snow Leopard 中 $PATH 在哪里设置?

在 OS X 10.6 Snow Leopard 中 $PATH 在哪里设置?

echo $PATH在命令行中输入并得到

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

我不知道这是在哪里设置的,因为我的.bash_login文件是空的。

我特别担心的是,安装 MacPorts 后,它会在其中安装一堆垃圾/opt。我认为在正常的 Mac OS X 安装中甚至不存在该目录。

更新:谢谢杰伯曼纠正我的echo $PATH陈述

答案1

启动时bash,每次您登录时它都会读取以下文件。对于 OS X,这意味着每次您打开新Terminal窗口时。

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

bash当你通过在命令行上输入来启动新的 shell 时,它会显示.bashrc

OS X 还使用~/.MacOSX/environment.plist设置更多环境变量,包括必要的路径。

最后,/etc/paths/etc/paths.d也被shell读取。


/opt/local/bin等由 MacPorts 添加~/.tcshrc。另外请务必查看~/.cshrc

答案2

看一下该文件/etc/paths,该文件被使用/usr/libexec/path_helper,该文件被使用/etc/profile

对于 MacPorts,使用sudo /etc/paths/opt/local/bin并重新打开终端窗口。

答案3

说真的,Leopard 为我们提供了一种添加路径的新方法。只需创建一个包含要添加的路径部分的文件,然后将其放入 /etc/paths.d 中

一步完成此操作的一个简单示例是:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

否则,您可以直接转到 /etc/paths.d 并将文件放在那里。无论哪种方式,该目录中文件的任何路径部分都将附加到默认路径。

这也适用于 manpath。

以下是更多详细信息的链接:

ars technica:如何在雪豹中向 PATH 添加一些内容?

第二点:MacPorts 将所有内容放入 opt 目录,正是因为 Apple 的产品不使用该目录。这样就不会发生冲突。他们的指南(顺便说一句,写得非常好)解释了为什么使用 opt,以及如何更改该默认设置(如果您愿意)。

MacPorts 指南

答案4

还有由以下因素确定的路径远程控制

echo $PATH与进行比较ssh localhost 'echo $PATH'。由于 ssh 不读取 /etc/profile,/usr/libexec/path_helper 不运行,因此会跳过 /etc/paths。现在尝试ssh localhost 'source /etc/profile; echo $PATH'。路径应该更接近。其余差异可能是由于 .bash_profile(ssh 也会跳过)和 .bashrc(ssh 会读取)中的路径修改造成的。

如果您希望 ssh 路径与您的正常终端路径相似,您可以将其添加source /etc/profile到您的 .bashrc 中。

相关内容