在包含空格的文件夹中为二进制工具创建别名时,会正确存储别名,但是在调用该命令时,会评估该空间,就好像它没有被正确取消一样。
二进制文件可在$PATH
中查看。我从zsh 4.3.11和bash 3.2.48运行了这两个,结果相同。
二进制路径
~/Test Folder/fooBinary
别名
alias foo="`which fooBinary`"
这导致
foo='~/Test Folder/fooBinary'
现在调用此别名会导致
[shell]: no such file or directory: ~/Test
这曾经用来逃避别名的间距,我没有费心去查看旧版本的shell,或者我会找到它。
我确实逃脱了间距:
alias foo="'`which fooBinary`'"
我的问题:
为什么在引用的别名中评估空格?
是否有更好的方法可以转义which
?
答案 0 :(得分:3)
别名总是在空格上分开。这是有意和有用的,因为它允许您对参数进行别名,例如: alias rm='rm -i'
或alias commit='git commit -a'
。
如果您需要以编程方式引用参数,可以使用printf %q
添加转义级别:
alias foo="$(printf %q "$(which fooBinary)")"