Linux指令–别名alias

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 Linux指令–别名alias,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、定义别名

格式: alias name=values

  • 等号=前后不能有空格
  • values中有空格时,加单引号或双引号
alias t='echo 666'

2、查看别名

  • alias 查看所有
  • alias {name} 查看特定name
    在这里插入图片描述

3、取消别名

  • 取消所有别名
    unalias -a

  • 取消特定name
    unalias {name}

4、起别名的弊端

当自己定义的别名恰好和Linux某个指令重名,此后执行的都将时别名对应的指令,如何解决?

  • 使用指令的绝对路径
  • 切换到该指令的路径,使用./command
  • 加反斜线
    在这里插入图片描述

5、别名的失效

通过alias设置的别名,仅限于当前shell页面,且重启后,别名失效。别名的永久有效,须在$HOME目录下的.alias文件中,在.bashrc中加入code:

# Aliases
if [ -f ~/.alias ]; then
  . ~/.alias
fi

6、单引号与双引号下别名的区别

alias dirA="echo current directory is $PWD"
alias dirB='echo current directory is $PWD'

//root目录下,一切正常
[root@localhost ~]$ dirA            
work directory is /root

[root@localhost ~]$ dirB            
work directory is /root

切换目录为/root/test后

cd test
//双引号出错
[root@localhost ~]$ dirA            
work directory is /root

//单引号正确
[root@localhost ~]$ dirB            
work directory is /root/test

造成以上的原因是:双引号下,变量$PWD直接被转换成了字符串,而单引号不受shell影响,这一点查看别名dirA、dirB可以看到:

[roc@localhost ~]$ alias dirA
alias dirA="echo work directory is /root"
 
[roc@localhost ~]$ alias dirB
alias dirB='echo work directory is $PWD'

7、shell脚本中的别名

将别名直接用在shell脚本中,报错:command not found
在这里插入图片描述

为此,使用shell内置的shopt指令来开启alias别名扩展选项expand_aliases

//开启
shopt -s expand_aliases
//查看是否开启
shopt expand_aliases

注意!!

  • 开启alias要在脚本中开启,而不是shell中。因为执行脚本会产生一个新的进程去执行,虽然在 Shell 中 expand_aliases 是 on 状态,但新的这个进程中是off的
  • 脚本中的 alias 没有继承 Shell 中 alias 的设置内容,需要加--login,即#!/bin/bash --login

错误情况一:没在脚本中开启alias
在这里插入图片描述
错误情况二:缺少–login
在这里插入图片描述

可以看到脚本中的alias指令无输出,即脚本中的 alias 没有继承 Shell 中 alias 的设置内容。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146182.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!