Shell别名哪个空格取消

时间:2014-01-21 21:20:28

标签: macos bash shell terminal zsh

在包含空格的文件夹中为二进制工具创建别名时,会正确存储别名,但是在调用该命令时,会评估该空间,就好像它没有被正确取消一样。

二进制文件可在$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

1 个答案:

答案 0 :(得分:3)

别名总是在空格上分开。这是有意和有用的,因为它允许您对参数进行别名,例如: alias rm='rm -i'alias commit='git commit -a'

如果您需要以编程方式引用参数,可以使用printf %q添加转义级别:

alias foo="$(printf %q "$(which fooBinary)")"