我一直在努力让别名在bash shell中运行。现在,让我们说 别名yum =' yum -v'在我的壳里。当我从CLI运行命令时,它可以工作。但是当我运行一个脚本时,它没有任何效果。如何让别名在shell中运行?
答案 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
会降低其可移植性,因为在不拥有别名的环境中运行时,它会中断。