x
'),c.close();var d=c.documentElement.scrollHeight>c.body.scrollHeight;return a.parentNode.removeChild(a),b=d?document.documentElement:document.body}var b=null;Object.defineProperty(document,"scrollingElement",{get:a})}();var b;return{afterOpen:function(c){c||(b=document.scrollingElement.scrollTop,document.body.classList.add(a),document.body.style.top=-b+"px")},beforeClose:function(c){c||(document.body.classList.remove(a),document.scrollingElement.scrollTop=b)},getScrollTop:function(){return b}}}("popup-open"); 
  • 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    在Bash脚本中引入alias的方法

    alias的使用

    在日常开发中,为了提高运维效率,我们会用alias(命令别名)来定义命令的简称。比如在~/.bash_profile中添加:

    alias ll='ls -lrt --color'
    alias bdebug="go build -gcflags '-N -l'"
    alias py3='/usr/bin/python3'

    执行source ~/.bash_profile之后,这些alias定义便载入到当前终端环境中,我们可以通过alias cmd>进行查看

    $ alias ll 
    ll='ls -lrt --color'
    
    $ alias bdebug
    bdebug='go build -gcflags '\''-N -l''

    在命令行执行alias也能看到预期效果

    $ 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.h
    -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 test

    在Bash脚本中引入alias的问题

    但是有些时候,我们希望将~/.bash_profile中定义好的alias引入Bash脚本中,以便简化命令。例如

    脚本文件test.sh

    #!/bin/bash
    source ~/.bash_profile
    ll

    执行test.sh文件却会报错

    $ bash test.sh 
    test.sh: line 5: ll: command not found

    这是因为在Bash中,alias默认是不能引入Bash脚本中的。Bash的官方文档其实更建议你使用function而非alias。那么问题来了,既然我辛辛苦苦写了这么多alias,总不能全部改成function吧,那得多费劲?

    幸好,解决方法还是有的.

    解决方法

    只需要在test.sh中加入一行shopt -s expand_aliases

    新的脚本文件

    #!/bin/bash
    
    shopt -s expand_aliases
    source ~/.bash_profile
    ll

    执行一下,果然成功了,这是为什么呢?

    $ 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.h
    -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 test
    -rw-rw-r-- 1 liyang liyang  64 Mar 8 21:33 test.sh

    关键在于shopt -s expand_aliases这句话,shopt是一个命令,使用它可以控制一些shell相关的开关:expand_aliases就是其中一个,当它被开启之后,Bash脚本中的所有命令别名alias都会被展开。

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

    总结

    参考

    https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html

    到此这篇关于在Bash脚本中引入alias的方法的文章就介绍到这了,更多相关Bash脚本引入alias内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 详解shell中source、sh、bash、./执行脚本的区别
    • linux bash脚本监控启动停止weblogic服务的脚本写法
    • Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
    • Bash脚本内置的调试方法技巧
    • 使用Python脚本在Linux下实现部分Bash Shell的教程
    上一篇:Webshell基础知识深入讲解
    下一篇:Shell expr命令进行整数计算的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    在Bash脚本中引入alias的方法 在,Bash,脚本,中,引入,alias,