为什么 zsh 无法从脚本中的路径读取 ~ (代字号)?
Why is zsh not able to read ~ (tilde) from a path in a script?
当 zsh
从脚本导出 PATH
时,它没有正确读取路径。
我的 PATH
是 export 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
当 zsh
从脚本导出 PATH
时,它没有正确读取路径。
我的 PATH
是 export 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