其中是Mac上的默认终端$PATH



我一直在查找整个系统,但找不到它。当我回显$PATH时,我会得到我添加的东西,加上默认路径。我没有.profile,也有.bashrc,但默认路径不在其中。我找它只是想知道它的位置,因为所有的教程都解释说它在.profile中……但如果你没有呢?那么它在哪里呢?有人有什么想法吗?

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

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

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

如果从/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,它反过来调用一个设置路径的可执行文件。

如接受的答案中所述,$PATH是通过首先查看文件/etc/paths的内容,然后查看文件夹/etc/paths.d中的每个文件来构建的。因此,预安装的bash系统安装中的$PATH包含这些文件以及其他shell类型中的每个条目。

然而,由于在最新的Mac OS版本中,默认的外壳是zsh,我遵循了一些教程,在这些教程中,作者避免将$PATH更改为bash外壳,并通过以下方式编辑~/.zshrc,简单地向$PATH添加了新条目:

export PATH=/path/available/only/for/zsh/shells:$PATH

上面的命令将/path/available/only/for/zsh/shells添加到$PATH,并且添加的路径将仅在zsh shell中可用。

我希望这能帮助那些像我一样,在zsh外壳中的$PATH中有太多条目,却不知道它们来自哪里的人!

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

我今天在调试问题时才意识到一个重要事实:配置文件设置(.bash_profile等)只能由登录shell读取。它们是而不是由用于启动应用程序的进程读取

您可以通过多种方式启动应用程序:单击/Applications中的图标,或在聚光灯搜索中键入名称,或单击Dock中的图标。。。在所有这些情况下,应用程序本身(即应用程序中的二进制或shell脚本)由launchd在没有任何父shell的情况下启动。这意味着您的配置文件没有运行,您的自定义设置(PATH、环境变量…)将被忽略。

这可能会引起各种各样的麻烦,例如,如果您将环境设置为使用特定版本的Java:您的应用程序将看不到这一点,并使用";默认";java,它将是版本号最高的一个。

在我的情况下,问题是我的应用程序在通过应用程序启动器运行时崩溃,但在从终端窗口运行时运行良好。。。原因是我有一个自定义路径,其中包括应用程序所需的一些库,但当应用程序由启动器运行时,该路径不可用。

我使用的解决方案是将所需的库符号链接到/usr/local/lib

我将在这里发布我的场景,以防其他人最终在这里使用重击技能。我正在运行MacOS Ventura,并安装了Anaconda,它也在终端中初始化。我想在某个编辑器中编辑$PATH变量,因为我想先放一个目录,然后再删除它。在哪里做这件事非常令人困惑,因为根据谷歌搜索,有多个区域处理你的$PATH变量。如果你在我的情况下,或者只是使用Anaconda,那么这里是你可以编辑路径的地方。

由于我在Mac上,我有.zshrc文件。打开它,你会看到一些底部的线条在处理蟒蛇。具体来说,您将看到# >>> conda initialize >>>。下面是Anaconda在$Path前面设置自己的目录。您会注意到else:语句递归地附加了/anaconda3/bin:path PATH="/somedirectorypath/anaconda3/bin:$PATH"。如果你想在前面放一条路径,你可以在anaconda块后面添加export PATH="newpath:$PATH"。然后你可以继续你的业务并删除它。或者你可以通过PATH = "newpath1:newpath2:newpath3"完全改变路径。

最新更新