1

仅当某个路径存在现有可执行文件时,我才尝试为程序设置别名。到目前为止,我一直在我的所有脚本中使用双引号来表示路径和别名,但是在将它们与包含空格的路径一起使用时遇到了问题。

例如,我因此设置了一个变量:PATH_TO_SUBL="/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl". 测试它 ( [[ -x $PATH_TO_SUBL ]]) 有效,但在别名中使用它不起作用(alias subl=$PATH_TO_SUBL导致 bash 返回/Applications/Sublime: No such file or directory)。

当我用单引号和转义空格 ( PATH_TO_SUBL='/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl') 设置它时,测试和别名都有效。这是为什么?

4

1 回答 1

4

采用:

alias subl="$PATH_TO_SUBL"

否则您的别名命令将被解析为:

alias suble=/some/thing else/here

这没有做出正确的别名定义。

(它可以在条件中不带引号的情况下工作,因为它们是由 shell 直接使用规则处理的。如果您实际使用条件[[ ... ]],它将无法工作。)test[ ... ]

于 2012-12-21T18:40:11.573 回答