path_helper 和 zsh

Eim*_*tas 9 zsh path

我读到 Apple 没有将越来越多的PATH变量变体塞到 shell 配置文件的末尾,而是创建了path_helper二进制文件,以便它可以PATH通过从/etc/paths.d/目录中读取路径列表来自动扩展变量。

此外 - 此文件仅为 csh 和 bash 生成输出(-c并相应地-s标记)。没有输出zsh(尽管 zsh 在某种程度上与 bash 兼容 - 我理解这一点)。

我正在使用 zsh。我有/etc/zshenv包含以下几行的文件:

# system-wide environment settings for zsh(1)
if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi
Run Code Online (Sandbox Code Playgroud)

当我打开终端或其新选项卡以完成该过程时,大约需要半秒钟。只有一个文件具有单一路径 ( /usr/X11/bin)。如果我完全移除/etc/zshenv,我要冒多少风险?将上述路径放在我的.zshrc.zshenv文件中就足够了吗?

sr_*_*sr_ 5

您是否在类似问题上看到过这个,superuser.com? 链接的博客文章说(我引用了几乎完整的文章):

/usr/libexec/path_helperMac OS X 每次创建登录 shell 时都会运行它,它真的很慢。(特别是,我认为速度很慢[[ "$NEWPATH" = *(*:)${p}*(:*) ]]。)我的终端窗口需要大约四秒钟才能打开。通过删除 /etc/paths.d 中的文件并将它们的内容直接放入 .bash_profile 中的 $PATH 中,终端窗口现在可以立即加载。

该讨论还包括一个指向用 Perl 编写github.com/mgprot/path_helper替代品的链接(不知道它的速度,tho)。

编辑:从上述博客文章的评论中 -一个补丁path_helper应该是解决问题的另一种方法。