我一直在尝试让别名在 bash shell 中工作。现在,假设我在 shell 中执行 alias yum='yum -v' 。当我从 CLI 运行命令时,它可以工作。但是当我运行脚本时,它没有任何效果。如何使别名在 shell 中工作?
问问题
367 次
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 回答