6

所以我在 OS X Leopard 上遇到了路径问题。似乎 OS X 正在添加我没有说明的其他路径,并且它扰乱了我的路径优先级。我只有一个.bash_login文件,我没有一个.bashrc或 .profile 文件。我的.bash_login文件是这样的:

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

当我运行导出时,这是它返回的路径:

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"

关于可以将 /usr/bin 放在那里以及如何获得/usr/local/bin更高优先级的任何想法。

我也为 Rails 标记了这个,因为这就是我现在正在做的事情......似乎 Mac 内置的 Ruby、Rails 和 Gems 优先于我安装的那个/usr/local/bin,也许你们是 Rubyists也可以提供帮助。

4

5 回答 5

16

你有没有看过这两个目录:

/etc/paths.d/
/etc/manpaths.d

在这些目录中的文件中定义的任何路径都会自动附加到 PATH 变量中——我主要使用这两个目录将第三方安装的应用程序放在 PATH 中。另外,请查看path_helperOS X 上的手册页。

编辑:查看 的内容/etc/profile,我可以看到它path_helper是首先执行的。手册页path_helper说,在读取/etc/paths.d//etc/manpaths.d/目录path_helper中的文件之前,读取并设置文件/etc/paths/etc/manpaths. 一看就/etc/paths知道了:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

而且,我相信,这些占您在 PATH 中看到的内容的一半。

于 2008-12-07T05:48:10.407 回答
4

您的更改似乎未应用。注意没有 /usr/local/mysql/bin

阅读 INVOCATION 上的 bash 手册页部分,.bash_login 仅在它是登录 shell 时才被读取——终端 shell 不是。您需要将其放入 ~/.bashrc 中。它将在登录和非登录 shell 中读取。

于 2008-12-07T05:41:51.373 回答
1

您还可以将内容放入 ~/.MacOSX/Environment.plist,详见https://web.archive.org/web/20150330034300/http://www.astro.washington.edu/users/rowen/AquaEnvVar。 html

这将使环境变量可用于所有应用程序,而不仅仅是那些通过终端 (bash) 会话启动的应用程序。

(现在似乎也有更好的建议)

于 2010-09-14T10:44:18.980 回答
0

我还在 Apple 的支持论坛上看到了一篇有趣的文章:

.bash_login 不再执行

有了这些信息,我发现一个被忽略的空白 .bash_profile 文件正在加载 - 并杀死了我试图在我的路径中设置的所有信息。

所以我想看起来我们可以根据情况有几个“正确”的答案。

于 2008-12-07T06:52:16.987 回答
0

只需输入 .bashrc 或 .login 就可以了

于 2008-12-28T17:10:49.627 回答