如何在所有shell中使用别名?

时间:2014-03-14 11:46:57

标签: bash shell aliases

我一直在努力让别名在bash shell中运行。现在,让我们说 别名yum =' yum -v'在我的壳里。当我从CLI运行命令时,它可以工作。但是当我运行一个脚本时,它没有任何效果。如何让别名在shell中运行?

2 个答案:

答案 0 :(得分:2)

在bash中,你可以导出函数,所以如果你这样做:

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

然后yum的'别名'将持续存在于子壳中。请注意,函数几乎总是优先于别名,并且(来自bash手册页)“对于几乎所有目的,别名都被shell函数取代。”我相信最初的条款“几乎所有目的”仅仅是hyberbole而且“几乎”可以安全地省略。

答案 1 :(得分:1)

来自bash联机帮助页:

  

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

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

shopt -s expand_aliases

您还需要使用别名(.bashrc.bash_profile.bash_login等来源文件。

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

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