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 位于何处?的主要内容,如果未能解决你的问题,请参考以下文章