macos - ZSH PATH 变量条目在 OS X Catalina 上向后

标签 macos path zsh

所以我只安装了 macOS Catalina 和 MacPorts。这导致我不得不修改 .zshenv 文件中的 PATH 和 MANPATH 环境变量,如下所示:

# configure an environment variable for Racket
export RACKET=/Applications/Racket

# configure an appropriate PATH variable for use with MacPorts
export PATH="/opt/local/bin:/opt/local/sbin:$RACKET/bin:$PATH"

# configure an appropriate MANPATH variable for use with MacPorts
export MANPATH="/opt/local/share/man:$RACKET/man:$MANPATH"

但是,运行以下命令 echo $PATH给了我与我期望相反的结果:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin:/Applications/Racket/bin

关于我应该做些什么来解决这个问题的任何想法?事实证明/opt/local/*即将结束时正在破坏我使用的相当多的实用程序的一些构建脚本。

最佳答案

~/.zshrc 中添加以下代码或 ~/.zprofile :

# Prepend the $PATH
[[ -f $HOME/.zshenv ]] && source $HOME/.zshenv 
# remove duplicate $PATH
typeset -U PATH
解释:
根据zsh loading order , 对于 zsh 中的任何登录 shell,它会调用 etc/zprofile之后 ~/.zshenv但之前~/.zshrc ,
其中包含 usr/libexec/path_helper :
 # file: etc/zprofile
 # system-wide environment settings for zsh(1)
if [ -x /usr/libexec/path_helper ]; then
   eval `/usr/libexec/path_helper -s`
fi
上面的代码移动了 /usr/bin:/bin:/usr/sbin:/sbin提前你自己加$PATH/opt/local/bin:/opt/local/sbin.. .
我们来源 .zshenv再次在/etc/zprofile之后再次在前面添加自己添加的路径,type -U PATH保留 path留在第一个出现并删除重复的。

关于macos - ZSH PATH 变量条目在 OS X Catalina 上向后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59131915/

相关文章:

swift - 在 MacOS 上检测后台 sleep 日期

python - 为什么 os.path.join() 在这种情况下不起作用?

string - ipython 文件路径自动完成 : string closing quotation insertion

macos - 当我打开 zsh 时,一些奇怪的字符显示为我的提示符(OSX 上的 oh-my-zsh)

vim - 如何让 x11/xQuartz 停止打开

linux - 如何在 Unix 控制台或 Mac 终端上运行 shell 脚本?

Java - 没有这样的文件或目录

macos - 如何在 OS X 10.6.7 中打开端口 22

python - emacs python Elpy 自动完成不适用于所有人

bash - 在 bash 中将十六进制转换为十进制