如何在Linux中以Sudo身份运行Alias

时间:2020-03-05 15:31:13  来源:igfitidea点击:

别名可轻松运行冗长的自定义命令。
我们可以通过将别名添加到bashrc或者Linux中运行的任何shell的配置文件来使其永久化。

当我们尝试使用sudo运行别名时,就会出现问题。
我们会看到如下错误:

sudo: my_alias: command not found

我们会认为,由于我们是以root用户身份运行的,因此应在root用户的bashrc中定义别名,例如:/。
bashrc。
继续尝试,但我敢打赌它不会起作用。

这时,我们需要使用sudo运行别名命令。

以sudo的身份运行别名

诀窍是为sudo本身创建一个别名,如下所示:

sudo='sudo '

sudo后的空格(或者制表符,如果我们愿意的话)在上面的代码中很重要。
现在,如果我们使用sudo运行alias命令,它应该可以正常工作。

但为什么?
当我们所做的只是将sudo命令替换为sudo和一个空格时,为什么现在可以正常工作?
答案在于使用别名的方式。

如果我们参考bash手册的别名部分,则会看到每个简单命令的第一个单词(如果未加引号)都将被检查以查看其是否具有别名。

如果别名值的最后一个字符是空格或者制表符,则还将检查别名后面的下一个命令字以进行别名扩展。

换句话说,在命令中,仅检查第一个单词的别名。
但是,如果别名值的末尾有空格或者制表符,则还将检查命令的下一个单词是否包含别名。

这就是为什么当我们简单地将sudo别名为“ sudo”运行sudo my_alias命令时,首先会检查sudo的别名。
找到一个别名,该别名的末尾有空格,因此系统检查下一个单词的别名。
它也可以找到该别名的别名,并且别名命令可以按我们希望的那样工作。