在shell脚本中使用alias别名

本文最后更新于2015年7月12日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

缘由:

经常用Linux进行操作的同学一般都会有各种各样的技巧来提升工作效率,而添加/改写shell中的alias无疑是比较常见的一种:通过设置自己惯用的alias可以快速的在Linux命令行中进行操作,减少键盘敲击、提升操作效率。不过,大部分人仅限于在命令行上使用alias,很少有人会在自己写的shell脚本中也使用alias,一方面是因为alias无法通用:不同的人有不同的习惯,并且在实际的生产环境中情况千差万别,alias无法保证脚本的通用性和有效性;另一方面就是——有些人真的不知道怎么在shell脚本中使用alias。而这篇文章主要就是针对不知道怎么在shell脚本中使用alias功能的人所写的。

搜索关键字:
  • bash shell alias
  • bash expand_aliases
参考解答:

查看Bash的manual你能找到下面的内容:

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).

翻译如下:

交互式shell中无法使用alias,除非用shopt命令显示设定expand_aliases选项。

expand_aliases
If set, aliases are expanded as described below under Aliases, Aliases. This option is enabled by default for interactive shells.

因此,将“shopt -s expand_aliases”添加到你的脚本中去,然后记得source(重新加载)你的别名文件/相应脚本:

我在前面的一篇文章(Linux中.bashrc和.bash_profile区别)中提到过:~/.bashrc 这个文件一般是由交互式非登录shell调用的,而大部分人一般都是将alias设置在~/.bashrc中的,所以默认情况下是无法在shell脚本中使用alias的;如果你真的需要在以后的shell编程中默认开启alias功能不建议这样做),可以通过设置BASH_ENV这个环境变量来指定非交互式shell需要调用的文件来实现该目的,虽然我并不建议这样做:

参考链接:

=EOF=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2357.html

《在shell脚本中使用alias别名》上有2条评论

  1. 真的很有用,解决了我的疑惑,搜索了好多文章,这篇帮助解决了问题。赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注