Shell 为什么zsh不能从脚本中的路径读取~(tilde)?

Shell 为什么zsh不能从脚本中的路径读取~(tilde)?,shell,path,export,zsh,oh-my-zsh,Shell,Path,Export,Zsh,Oh My Zsh,当zsh从脚本导出路径时,它没有正确读取路径 我的PATH是export PATH=“~/PATH/to/stuff/”,但当我试图运行位于该路径的命令时,zsh找不到它 当我将路径更改为导出路径=“$HOME/PATH/to/stuff/”时,zsh能够运行该命令 编辑:奇怪的是,我刚刚检查了这一点,它正在使用export PATH=“~/PATH/to/stuff/”再次工作。我的开发环境一定有点奇怪 编辑2:我之前没有提到我正在阅读的脚本export PATH=“~/PATH/to/stu

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

我的
PATH
export PATH=“~/PATH/to/stuff/”
,但当我试图运行位于该路径的命令时,
zsh
找不到它

当我将
路径更改为
导出路径=“$HOME/PATH/to/stuff/”
时,
zsh
能够运行该命令

编辑:奇怪的是,我刚刚检查了这一点,它正在使用
export PATH=“~/PATH/to/stuff/”
再次工作。我的开发环境一定有点奇怪


编辑2:我之前没有提到我正在阅读的脚本
export PATH=“~/PATH/to/stuff/”
正在为主要使用
bash
作为shell的开发团队构建本地开发环境。我更喜欢使用
zsh
,因此我必须让我的shell与团队中占主导地位的
bash
设置的所有配置配合得很好。

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

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

# Result:    /Users/swift/Desktop/Capture/
但是,当您使用字符串时,您会得到以下结果:

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

# Result:    ~/Desktop/Capture/
因此,要正确操作,您必须尝试这种方法:

另外,还有一个有用的命令用于扩展tilde

下面是一个例子:

zsh
中使用
magicequalsubst
命令:


只有不带引号的波浪形块才能进行波浪形块扩展。至少,使用
export PATH=~“/PATH/to/stuff”
。正如切普纳所说。请尝试导出路径=~/“PATH/to/stuff/”
或导出路径=“$HOME/PATH/to/stuff/”
。这很有趣,我不知道。这对
zsh
bash
的工作原理相同吗?我用edit2:编辑了我的答案,这解释了为什么它必须与
bash
zsh
一起工作。这两种方法都很好:
bash
zsh
。但是
magicequalsubst
命令用于zsh。
tilde=~
export PATH="${tilde}/Desktop/Capture/"
echo $PATH                             

# Result:    /Users/swift/Desktop/Capture/
echo tilda=~

# Result:    tilda=~
set -o magicequalsubst
echo tilda=~    

# Result:    tilda=/Users/swift