在同一行中定义和使用别名似乎不起作用:
$ alias x=ls; x
x: command not found
Run Code Online (Sandbox Code Playgroud)
如何x在第二次调用中“转义”以便将其识别为别名?
mur*_*uru 10
你不能(以通常的方式)。请参阅Bash 手册中有关别名的部分(重点是我的):
有关别名的定义和使用的规则有些令人困惑。在执行该行或复合命令上的任何命令之前,Bash 始终读取至少一个完整的输入行以及构成复合命令的所有行。别名在读取命令时展开,而不是在执行命令时展开。因此,与另一个命令出现在同一行的别名定义在读取下一行输入之前不会生效。该行上别名定义后面的命令不受新别名的影响。[...]为了安全起见,请始终将别名定义放在单独的行上,并且不要在复合命令中使用别名。
您可以通过使用以下命令强制重新解析来解决此问题eval:
$ alias x=date; eval x
Fri Nov 12 18:20:54 JST 2021
Run Code Online (Sandbox Code Playgroud)