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

wop*_*ers 4 shell zsh export path oh-my-zsh

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

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

当我将 更改为PATHexport PATH="$HOME/path/to/stuff/",便zsh可以运行该命令。

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

编辑 2:我之前没有提到我正在阅读的脚本正在export PATH="~/path/to/stuff/"为主要bash用作 shell的开发人员团队构建本地开发环境。我更喜欢使用,zsh所以我必须让我的 shell 与bash整个团队的主要设置的所有配置一起玩得很好。

ARG*_*Geo 5

使用以下代码来获得你想要的:

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

# Result:    /Users/swift/Desktop/Capture/
Run Code Online (Sandbox Code Playgroud)

虽然,当你使用字符串时,你会得到这个:

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

# Result:    ~/Desktop/Capture/
Run Code Online (Sandbox Code Playgroud)

因此,要做到正确,您必须尝试这种方法

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

# Result:    /Users/swift/Desktop/Capture/
Run Code Online (Sandbox Code Playgroud)

PS 此外,还有一个有用的命令可以扩展波浪号

这是一个例子

echo tilda=~

# Result:    tilda=~
Run Code Online (Sandbox Code Playgroud)

使用magicequalsubst命令zsh

set -o magicequalsubst
echo tilda=~    

# Result:    tilda=/Users/swift
Run Code Online (Sandbox Code Playgroud)