我希望第二行显示foo
而不是命令未找到
:
$ alias foo="echo bac" ; foo;
-bash: foo: command not found
$ foo
bac
$
为什么第二行不会显示foo
?以下Shell测试结果都一样:
- bash 3.2.5
- zsh 5.0.8
- dash 0.5.9
- busybox 1.25.0
我希望第二行显示foo
而不是命令未找到
:
$ alias foo="echo bac" ; foo;
-bash: foo: command not found
$ foo
bac
$
为什么第二行不会显示foo
?以下Shell测试结果都一样:
为了在bash中在同一行设置和使用alias
,您可以使用以下命令:
eval $'alias df5=df\ndf5 -h'
(来源:Hauke Laging的解决方法 + Kusalananda的解决方法)。
命令的解释:
eval
并在alias
定义和其使用之间放置一个新行。“$'...'是一个'C字符串',
bash
会在将其传递给eval
之前将其中的\n
扩展为字面换行符。”