本篇文章给大家分享的是有关怎么在Bash脚本中引入别名方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
别名的使用
在日常开发中,为了提高运维效率,我们会用别名(命令别名)来定义命令的简称。比如在<代码> ~/ash_profile> 代码中添加:
alias 你=& # 39;ls -lrt ——颜色# 39; alias bdebug=癵o build  -gcflags & # 39; -N - l # 39;“ alias py3=& # 39;/usr/bin/python3& # 39;
执行~/<代码>来源。bash_profile 代码>之后,这些别名定义便载入到当前终端环境中,我们可以通过<代码>别名& lt; cmd> 代码>进行查看
,美元alias ll 你=& # 39;ls -lrt ——颜色# 39; 美元,alias bdebug bdebug=& # 39; go build  -gcflags & # 39; \ & # 39; & # 39; -N - l # 39; \ & # 39;
在命令行执行别名也能看到预期效果
,美元ll total 44 -rw-rw-r,, 1, liyang liyang , 62, Sep 16, 09:38 test.c -rw-rw-r,, 1, liyang liyang , 68, Sep 16, 09:38 foo -rw-rw-r,, 1, liyang liyang , 74, Sep 16, 09:38 foo.c -rwxrwxr-x 1, liyang liyang 8592年,Sep 16, 09:44 libfoo.so -rw-rw-r,, 1, liyang liyang 4347年,Sep 16, 09:44 o23.s -rwxrwxr-x 1, liyang liyang 9451年,Sep 16, 09:45 测试
在Bash脚本中引入别名的问题
但是有些时候,我们希望将<代码> ~/. bash_profile> 代码中定义好的别名引入Bash脚本中,以便简化命令,例如
脚本文件测试。sh
# !/bin/bash source ~/. bash_profile 将
执行测试。上海文件却会报错
,美元bash test.sh test.sh: line 5:噢,command not 发现
这是因为在Bash中,别名默认是不能引入Bash脚本中的.Bash的官方文档其实更建议你使用<代码> 代码>函数而非<代码>别名> 代码。那么问题来了,既然我辛辛苦苦写了这么多别名,总不能全部改成函数吧,那得多费劲?
幸好,解决方法还是有的。
解决方法
只需要在测试。上海中加入一行<代码> shopt - s expand_aliases 代码>
新的脚本文件
# !/bin/bash shopt -s  expand_aliases source ~/. bash_profile 将
执行一下,果然成功了,这是为什么呢?
,美元bash test.sh total 48 -rw-rw-r,, 1, liyang liyang , 62, Sep 16, 09:38 test.c -rw-rw-r,, 1, liyang liyang , 68, Sep 16, 09:38 foo -rw-rw-r,, 1, liyang liyang , 74, Sep 16, 09:38 foo.c -rwxrwxr-x 1, liyang liyang 8592年,Sep 16, 09:44 libfoo.so -rw-rw-r,, 1, liyang liyang 4347年,Sep 16, 09:44 o23.s -rwxrwxr-x 1, liyang liyang 9451年,Sep 16, 09:45 测试 -rw-rw-r,, 1, liyang liyang , 64, Mar 8, 21:33 测试。sh
关键在于<代码> shopt - s expand_aliases 代码>这句话,<代码> shopt> 代码是一个命令,使用它可以控制一些外壳相关的开关:<代码> expand_aliases> 代码就是其中一个,当它被开启之后,Bash脚本中的所有命令别名<代码>别名> 代码都会被展开。
expand_aliases
如果设置,别名是扩展如下所述别名,别名。这个选项是默认启用交互式shell。
以上就是怎么在Bash脚本中引入别名方法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。