我刚刚安装了 oh-my-zsh。事情进展顺利。然后我尝试注释掉export ZSH="~/.oh-my-zsh"
之后,当我取消注释该行时,我不断收到以下错误。但是,存在“oh-my-zsh.sh”
(base) abc@def-MacBook-Pro .oh-my-zsh % source $ZSH/oh-my-zsh.sh
source: no such file or directory: ~/.oh-my-zsh/oh-my-zsh.sh
(base) abc@def-MacBook-Pro .oh-my-zsh % ls -l ~/.oh-my-zsh/oh-my-zsh.sh
-rwxr--r-- 1 abc staff 5927 Feb 11 2022 /Users/abc/.oh-my-zsh/oh-my-zsh.sh
答案1
这是因为当您引用变量时(使用任何类型的引用机制,包括单引号、双引号、反斜杠等)~
, 不会扩展到变量的值。$HOME
$'...'
因此你可以改用以下命令:
export ZSH=~"/.oh-my-zsh"
或者
export ZSH=~/.oh-my-zsh
或者
export ZSH="$HOME/.oh-my-zsh"
请注意,通常,在以下任一~
之后都不会展开=
:
$ echo x=~
x=~
除非magicequalsubst
启用该选项:
$ set -o magicequalsubst
$ echo x=~
x=/home/me
但它们在任务中得到了扩展:
$ x=~
$ echo "$x"
/home/me
在相对较新的版本中zsh
,export
和其他变量赋值内置函数被视为双内置函数 / 关键字,并且它们的参数被解析为赋值。
答案2
我现在仍然确定为什么会发生这种情况。不过,重新安装 oh-my-zsh 可以解决该问题。