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