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

缘由:

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

搜索关键字:

bash shell alias

bash expand_aliases

参考解答:

#在使用alias之前添加下面的内容

shopt -s 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(重新加载)你的别名文件/相应脚本:

shopt -s expand_aliases

source ~/.bash_aliases

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

#1.给 ~/.bashrc 添加一行内容用于设置BASH_ENV环境变量

BASH_ENV='~/.non_interactive_shell'

#2.设置 ~/.non_interactive_shell 文件内容如下

shopt -s expand_aliases

参考链接:

=EOF=

linux 脚本 alias,在shell脚本中使用alias别名相关推荐

  1. linux 脚本 获取pid,Shell脚本中获取进程ID的方法

    提问: 我想要知道运行中脚本子shell的进程id.我该如何在shell脚本中得到PID. 当我在执行shell脚本时,它会启动一个叫子shell的进程.作为主shell的子进程,子shell将she ...

  2. 《Linux命令行与shell脚本大全》笔记

    初识Linux Shell 什么是Linux Linux可划分为以下四部分: Linux内核 GNU工具 图形化桌面环境 应用软件 深入探究Linux内核 内核主要负责以下四种功能: 系统内存管理 软 ...

  3. 【Linux命令行与Shell脚本编程】第五章 理解 Shell 父子关系 后台进程 协程

    Linux命令行与Shell脚本编程 第五章 理解 Shell 文章目录 Linux命令行与Shell脚本编程 五,理解 Shell 5.1,shell的类型 5.2,shell的父子关系 5.2.1 ...

  4. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter17-ChapterB )

    十七.创建函数 bash shell 提供了用户自定义函数功能,可以将 shell 脚本代码放入函数中封装起来. 函数是一个脚本代码块,你可以为其命名并在脚本中的任何位置重用它.每当需要在脚本中使用该 ...

  5. linux 命令行与shell脚本编程大全

    linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...

  6. linux脚本求命令行上整数和,《Linux命令行与shell脚本编程大全》 第二十二章 学习札记...

    <Linux命令行与shell脚本编程大全> 第二十二章 学习笔记 第二十二章:使用其他shell 什么是dash shell Debian的dash shell是ash shell的直系 ...

  7. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  8. 黑客进阶必读书《Linux命令行与Shell脚本编程大全》(第2版)

    欢迎来到命令行和shell脚本编程的世界!厚厚的一本小样书,拿在手上,厚厚的一本,六百多页.不只是掂在手上的重量,更是一本优秀的初学者入门指南,又会是你的Linux书库中非常不错的参考书.如果你想从整 ...

  9. Linux_《Linux命令行与shell脚本编程大全》第十八章学习总结

    时间:2017年12月04日星期一 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...

  10. Linux_《Linux命令行与shell脚本编程大全》第二章学习总结

    时间:2017年04月05日 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>(第三版 ...

最新文章

  1. 云平台屡次停摆,核心系统事故频发?您的运维系统该升级了!
  2. 传闻,Google曾用股票来换取他的数学研究
  3. 矩阵元素求积及其矩阵元素的差分
  4. 6-机器学习启蒙- 深度学习: 图像搜索
  5. 2019-11-09 正定矩阵的一些常见概念
  6. 自动化系列-pyppeteer键盘输入点击
  7. 新浪微博开放平台开发-android客户端(2)
  8. 安装教程rtx2080ti_点云深度学习环境配置指南(一)Ubuntu16.04+RTX2080ti
  9. lambda里面赋值局部变量必须是final原因
  10. 一个地方越有钱,人们就越不想结婚?
  11. C语言,向函数传递一维数组,调用函数并计算平均成绩
  12. python牛顿迭代法_Jacobi迭代算法的Python实现详解
  13. NYOJ-背包问题(贪心)
  14. Python函数的可变参数传递(*args与**kwargs)
  15. mysql 2049_mysql数据库备份与还原,解决40101和ERROR 2049错误
  16. PHP+CKEditor 3配置详细说明(包括图片上传)
  17. (转)android连网详解
  18. 工作默认加班,不续签默认不加班
  19. 条件概率密度与条件均值
  20. STM32串口通信程序模拟超市打印机工作-使用接收中断、空闲中断、校验中断

热门文章

  1. css html span 块状不换行
  2. 55道常见的计算机面试题
  3. python 如何获取当前系统的时间
  4. 卷积核输出特征图大小的计算 深度学习
  5. Pytorch: 命名实体识别: BertForTokenClassification/pytorch-crf
  6. 操作系统学习笔记 第二章:进程管理(王道考研)
  7. tvm模型部署c++ 分析
  8. 动态表单工作量给后端
  9. CUDA 8的混合精度编程
  10. nvGRAPH API参考分析(二)