为什么 zsh 无法从脚本中的路径读取 ~ (代字号)?

Why is zsh not able to read ~ (tilde) from a path in a script?

zsh 从脚本导出 PATH 时,它没有正确读取路径。

我的 PATHexport PATH="~/path/to/stuff/",但是当我尝试 运行 位于该路径的命令时,zsh 找不到它。

当我将 PATH 更改为 export PATH="$HOME/path/to/stuff/" 时,zsh 能够 运行 命令。

编辑: 奇怪的是我刚刚检查了这个并且它再次与 export PATH="~/path/to/stuff/" 一起工作。我的开发环境一定发生了一些奇怪的事情。

编辑 2: 我之前没有提到我正在阅读 export PATH="~/path/to/stuff/" 的脚本正在为主要使用 [= =20=] 作为他们的 shell。我更喜欢使用 zsh,所以我必须让我的 shell 与团队中占主导地位的 bash 设置的所有配置配合得很好。

使用以下代码获取您想要的内容:

export PATH=~/Desktop/Capture/
echo $PATH

# Result:    /Users/swift/Desktop/Capture/

不过,当您使用字符串时,您会得到:

export PATH="~/Desktop/Capture/"
echo $PATH                      

# Result:    ~/Desktop/Capture/

So to get it right, you'll have to try this approach:

tilde=~
export PATH="${tilde}/Desktop/Capture/"
echo $PATH                             

# Result:    /Users/swift/Desktop/Capture/

P.S。此外,还有一个有用的命令可以扩展波浪线

这是一个例子

echo tilda=~

# Result:    tilda=~

zsh中使用magicequalsubst命令:

set -o magicequalsubst
echo tilda=~    

# Result:    tilda=/Users/swift