非交互式bash中的别名

非交互式bash中的别名,bash,alias,Bash,Alias,我想让别名在非交互式bash中工作。我运行以下命令: bash -c "alias toto=ls; shopt -s expand_aliases; alias toto=ls; toto" 我得到以下信息: bash: toto : commande not found 我做错了什么?来自manbash: 执行命令时,别名将展开 读取,而不是在执行时读取。因此,需要一个别名定义 与另一个命令出现在同一行上不会发生错误 在读取下一行输入之前生效 这意味着,即使在交互式shell中 alia

我想让别名在非交互式bash中工作。我运行以下命令:

bash -c "alias toto=ls; shopt -s expand_aliases; alias toto=ls; toto"
我得到以下信息:

bash: toto : commande not found

我做错了什么?

来自
manbash

执行命令时,别名将展开 读取,而不是在执行时读取。因此,需要一个别名定义 与另一个命令出现在同一行上不会发生错误 在读取下一行输入之前生效

这意味着,即使在交互式shell中

alias toto=ls; toto
不起作用。别名定义和调用之间必须有换行符。所以

bash -c 'shopt -s expand_aliases; alias toto=ls
toto'
应该有效。

可能的重复: