创建包含空间的二进制工具的别名时正确取消。
在$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
这曾经用来从别名中逃脱间距,我没有费心检查我的旧壳的版本,否则我会找到它。
我确实逃脱了间距:
alias foo="'`which fooBinary`'"
我的问题:
为什么在引用的别名中评估空间?
有更好的方法可以逃脱which
?
别名始终在空间上分裂。这是故意的和有用的,因为它允许您别名争论,例如alias rm='rm -i'
或alias commit='git commit -a'
。
如果您需要以编程方式引用参数,则可以使用printf %q
添加一个逃逸级别:
alias foo="$(printf %q "$(which fooBinary)")"