3

我一直在尝试让别名在 bash shell 中工作。现在,假设我在 shell 中执行 alias yum='yum -v' 。当我从 CLI 运行命令时,它可以工作。但是当我运行脚本时,它没有任何效果。如何使别名在 shell 中工作?

4

2 回答 2

2

在 bash 中,您可以导出函数,因此如果您这样做:

yum() { command yum -v "$@"; }
export -f yum

然后 yum 的“别名”将保留在子外壳中。请注意,函数几乎总是优于别名,并且(来自 bash 手册页)“对于几乎所有目的,别名都被 shell 函数取代。”。我相信最初的条款“几乎所有目的”只是夸张的说法,“几乎”可以安全地省略。

于 2014-03-14T12:06:22.023 回答
1

bash手册页:

当 shell 不是交互式时,别名不会展开,除非使用 shopt 设置了 expand_aliases shell 选项(请参阅下面的 SHELL BUILTIN COMMANDS 下的 shopt 描述)。

因此,您需要在脚本中执行以下操作:

shopt -s expand_aliases

您还需要使用别名(、、等)来.bashrc获取.bash_profile文件.bash_login

shopt -s expand_aliases
source /path/to/alias/file

请注意,alias在你的 shell 脚本中使用会降低它的可移植性,因为它在没有你的别名的环境中运行时会中断。

于 2014-03-14T12:06:40.260 回答