我已经在整个系统中寻找,但无法找到它。当我执行echo $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,而 /etc/profile 又会调用一个可执行文件来设置路径。
/etc/profile
和 /etc/csh.login
,具体取决于你使用的是 sh/bash 还是 csh/tcsh)。不过,要得到完整答案,请查看脚本内部的代码:它会查看 /etc/paths
和 /etc/paths.d/*
(这些文件应该都是文件,每个路径条目占一行)。 - torek$PATH
的构建是通过首先查看文件/etc/paths
的内容,然后查看文件夹/etc/paths.d
中的每个文件。因此,在预安装的系统安装中,$PATH
包含这些文件中的每个条目,以及其他shell类型中的条目。
但是,由于在最新的Mac OS版本中,默认的shell是zsh
,所以我按照几个教程进行操作,在这些教程中作者避免更改bash
shell的$PATH
,只需按以下方式编辑~/.zshrc
即可添加新条目到$PATH
:
export PATH=/path/available/only/for/zsh/shells:$PATH
/path/available/only/for/zsh/shells
添加到 $PATH
中,并且添加的路径只能在 zsh
shells 中使用。zsh
shells 中的 $PATH
中有太多条目,而找不出其来源的人有所帮助!zsh
作为默认shell - 取代了bash
。您可能(或可能不会)拥有文件~/.zprofile
和~/.zshrc
,它们具有相同的目的。 - user5395338在调试问题时,我今天才意识到一个重要的事实:配置文件(例如.bash_profile
等)只被登录 shell读取。它们不会被用于启动应用程序的进程读取。
您以各种方式启动应用程序:单击/Applications
中的图标,或在 Spotlight 搜索中键入名称,或单击 Dock 中的图标... 在所有这些情况下,应用程序本身(即应用程序内部的二进制文件或 shell 脚本)由launchd启动,没有任何父 shell。这意味着您的配置文件不会运行,并且将忽略您的自定义设置(PATH、环境变量等)。
这可能会导致各种问题,例如,如果您设置环境来使用特定版本的 Java,则您的应用程序将无法看到它并使用“默认”Java,这将是具有最高版本号的 Java。
在我的情况下,问题是当通过应用程序启动器运行应用程序时,我的应用程序崩溃了,但是从终端窗口运行时可以正常运行...原因是我有一个自定义路径,其中包括应用程序所需的一些库,但是在应用程序由启动器运行时不可用。
我使用的解决方案是将所需的库符号链接到/usr/local/lib
目录下。# >>> conda initialize >>>
。
下面是 Anaconda 将自己的目录设置为 $Path 前缀。
你会注意到 else: 语句递归地附加了 /anaconda3/bin 路径 PATH="/somedirectorypath/anaconda3/bin:$PATH"
。
如果你想暂时将某个路径放在前面,你可以在 anaconda 块之后添加 export PATH="newpath:$PATH"
。然后你就可以去做自己的事情并将其删除。或者你可以通过 PATH = "newpath1:newpath2:newpath3"
来完全更改路径。
man path_helper
命令时显示path_helper
的手册不存在,但是编辑/etc/paths
文件起作用了。 - Koen.$PATH
配置不一致的烦人问题,请参见问题帖子。 - Galder Zamarreño