Mac 上的默认终端 $PATH 位于何处?

Posted

技术标签:

【中文标题】Mac 上的默认终端 $PATH 位于何处?【英文标题】:Where is the default terminal $PATH located on Mac? 【发布时间】:2012-04-07 15:12:15 【问题描述】:

我一直在寻找整个系统,但我找不到它。当我执行 echo $PATH 时,我会得到我添加的内容,以及默认路径。我没有 .profile,也有 .bashrc,但默认路径不在其中。我正在寻找它只是为了知道它的位置,因为所有教程都解释它在 .profile 中......但是如果你没有呢?那么它在哪里呢?有人有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您使用sudo man path_helper,它会谈到它如何将路径组合在一起。您可以查看/etc/paths/etc/paths.d。我做到了,并找到了我要找的东西。

【讨论】:

man path_helper 给了我No manual entry for path_helper,但编辑/etc/paths 有效。 @Koen.,试试sudo man path_helper。我会修改条目。感谢您的来信! 为此感谢一百万。这个技巧帮助我解决了一个恼人的问题,即 OSX 上 shell 和 Emacs 之间的 $PATH 配置不同,请参阅 problem post。 我的路径中有很多东西不是由 .zshenv 或 /etc/paths.d 中的任何东西设置的(没有 /etc/paths)。那么现在呢?【参考方案2】:

包括PATH 在内的许多系统范围的设置都设置在/etc/profile 中,bash 在启动时会读入。在 Mac OS X 上,这个文件通常使用path_helper 来设置PATH。该实用程序依次从/etc 下的其他系统配置文件中读取信息(请参阅path_helper manpage)。

请注意,即使您禁用 bash 读取初始化文件(例如,使用 --noprofile 等命令行选项),它仍然会继承父进程的环境。

【讨论】:

我只得到正则表达式。我正在寻找 /usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 之类的东西但我没有有.profile,它不在我的.bashrc中,但我知道它存在因为我可以从$PATH中回显它【参考方案3】:

如果你从 /etc/profile 开始,它应该看起来像这样:

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

它正在测试文件是否存在,如果存在,则执行它。如果你手动执行它,你会得到这样的东西:

PATH="/usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin"; export PATH;

我相信这就是您正在寻找的。所以它来自/etc/profile,它又调用了一个设置路径的可执行文件。

【讨论】:

我明白这一点,我查看了 Adam 指出的内容,但为了实现这一点,它需要从某个地方获取信息。 path_helper 里面的表达式真的会生成 /usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 吗? 这确实是路径的来源(通过/etc/profile/etc/csh.login 取决于您的shell 是sh/bash 还是csh/tcsh)。不过,请查看脚本中的代码以获得其余答案:它查看 /etc/paths/etc/paths.d/*(所有这些都应该是文件,每个路径条目包含一行)。 我不明白你所说的“表达式”是什么意思。 path_helper 是一个二进制可执行文件。它使用反引号(第 2 行)作为 shell 命令的一部分调用,该反引号输出生成的路径帮助程序。然后,该行的 eval 部分指示 path_helper 的输出应作为 shell 的一部分执行。请注意,它的最后一部分是 export PATH;,它将结果放入您的环境 shell。【参考方案4】:

Mac 上的 .profile 文件位于您的用户文件夹中:~/Users/youruser/ 但是,.profile 文件是隐藏的。您可以按 Command+shift+。 (command, shift, dot) 在 Finder 上查看它们。

【讨论】:

我在 Catalina 上,在那个位置没有 .profile 文件。或 .bash_profile 或 .bashrc。 @NicFoster:回想一下,在 Catalina 中,Apple 决定 zsh 将成为默认 shell - 替换 bash。您可能(也可能没有)拥有用于相同目的的文件 ~/.zprofile~/.zshrc 我不确定,但看起来 Catalina 并没有让您直接访问 $PATH。相反,请查看 /etc/paths。对我来说,第 1 行是 /usr/local/bin;第 2 行是 /usr/bin,依此类推。我是这样解释的:每一行都有一个路径,而 $PATH 是每一行的串联。想让你的路径成为第一,让它成为第一行。想要最后,放在最后一行。 这并不能真正回答问题。默认路径的位置在 beOn 接受的答案中给出。

以上是关于Mac 上的默认终端 $PATH 位于何处?的主要内容,如果未能解决你的问题,请参考以下文章

Mac上的jenkins,PATH没有设置正确,没有/ usr / local / bin

mac 终端 svn 命令

Mac终端修改文稿文件夹位置

如何从我的 Mac 上的终端窗口运行 g++

在Mac终端下使用conda命令提示未找到命令conda

如何使用终端默认情况下阻止Mac应用保存到iCloud