我正在尝试仅在某个路径上存在可执行文件时才为程序设置别名。到目前为止,我一直在我的所有脚本中使用双引号用于路径和别名,但是使用包含空格的路径时遇到了问题。
例如,我已经设置了一个变量:PATH_TO_SUBL="/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
。测试它([[ -x $PATH_TO_SUBL ]]
)有效,但在别名中使用它不会(alias subl=$PATH_TO_SUBL
导致bash返回 / Applications / Sublime:没有这样的文件或目录)。< / p>
当我使用单引号和转义空格(PATH_TO_SUBL='/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl'
)设置时,测试和别名都可以正常工作。那是为什么?
答案 0 :(得分:4)
使用:
alias subl="$PATH_TO_SUBL"
否则您的alias命令将被解析为:
alias suble=/some/thing else/here
没有做出正确的别名定义。
(它在[[ ... ]]
条件中没有引号的情况下工作,因为它们直接由shell处理它们的规则。如果你实际使用test
{{1}有条件的。)