【问题标题】:Aliases in non-interactive bash [duplicate]非交互式 bash 中的别名 [重复]
【发布时间】:2019-08-22 09:15:09
【问题描述】:

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

bash -c "alias toto=ls; shopt -s expand_aliases; alias toto=ls; toto"

我得到以下信息:

bash: toto : commande not found

我做错了什么?

【问题讨论】:

标签: bash alias


【解决方案1】:

来自man bash

当命令被扩展时,别名被扩展 读取,而不是在执行时。因此,别名定义 与另一个命令出现在同一行不会占用 在读取下一行输入之前生效。

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

alias toto=ls; toto

行不通。别名定义和调用之间必须有一个换行符。所以,

bash -c 'shopt -s expand_aliases; alias toto=ls
toto'

应该可以。

【讨论】:

    猜你喜欢
    • 2010-12-09
    • 2013-04-16
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多