我找遍了整个系统,但是找不到。当执行 echo $PATH 操作时,我将获得添加的内容以及默认路径。我没有。侧写,我有一个。Bashrc,但缺省路径不在其中。我正在寻找它只是为了知道它的位置,因为所有的教程解释说,它在。侧写... 但如果你没有呢?那么它位于哪里?有人知道吗?
包括 PATH在内的许多系统范围的设置设置在 /etc/profile中,/etc/profile在启动时由 bash读入。在 MacOSX 上,这个文件通常使用 path_helper来设置 PATH。该实用程序依次从 /etc下的其他系统配置文件中读取信息(参见 path_helper手册)。
PATH
/etc/profile
bash
path_helper
/etc
请注意,即使您禁用 bash 读取初始化文件(例如使用诸如 --noprofile之类的命令行选项) ,它仍然会继承父进程的环境。
--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,该配置文件又调用设置路径的可执行文件。
如果你做 sudo man path_helper,它谈了一点关于如何把路径放在一起。你可以看看 /etc/paths和 /etc/paths.d。我找到了,找到了我要找的东西。
sudo man path_helper
/etc/paths
/etc/paths.d
Mac 上的. profile 文件位于用户文件夹中: ~/Users/youruser/ 但是,. profile 文件是隐藏的。您可以在 Finder 上按 Command + shift + . (Command,shift,dot)查看它们。
正如在已接受的答案中提到的,构建 $PATH的方法是首先查看文件 /etc/paths的内容,然后查看文件夹 /etc/paths.d中的每个文件。因此,预先安装的 bash系统安装中的 $PATH包含这些文件以及其他 shell 类型中的每个条目。
$PATH
然而,因为在最新的 Mac OS 版本中,默认的 shell 是 zsh,我遵循了一些教程,在这些教程中,作者避免了为 bash shell 更改 $PATH,而只是通过以下方式编辑 ~/.zshrc,向 $PATH添加了新的条目:
zsh
~/.zshrc
export PATH=/path/available/only/for/zsh/shells:$PATH
上面的命令将 /path/available/only/for/zsh/shells添加到 $PATH,并且添加的路径只能在 zsh shell 中使用。
/path/available/only/for/zsh/shells
我希望这可以帮助一些人,像我一样,有太多的条目在 $PATH中的 zsh外壳,并不能找出他们来自哪里!
我今天在调试问题时才意识到一个重要的事实: 配置文件设置(.bash_profile等)只被 登录 shell读取。它们是由用于启动 申请的进程读取的 没有。
.bash_profile
你以不同的方式启动你的应用程序: 点击 /Applications中的图标,或者在 Spotlight 搜索中键入名称,或者点击 Dock 中的图标... 在所有这些情况下,应用程序本身(即应用程序内部的二进制或 shell 脚本)是由 发射启动的,没有任何父 shell。这意味着您的配置文件未运行,并且您的自定义设置(PATH、环境变量...)将被忽略。
/Applications
这可能会导致各种各样的麻烦,例如,如果您设置您的环境使用特定版本的 Java: 您的应用程序将不会看到这一点,并使用“默认”Java,这将是一个最高的版本号。
在我的案例中,问题是我的应用程序在通过应用程序启动程序运行时崩溃了,但是在终端窗口运行时运行良好... ... 原因是我有一个自定义路径,其中包含了应用程序所需的一些库,但是当应用程序由启动程序运行时这些库是不可用的。
我使用的解决方案是将所需的库符号链接到 /usr/local/lib
/usr/local/lib