如何在 Linux 中使用 Sudo 运行别名
我猜你已经知道如何在 Linux 中创建别名。别名可以帮助你轻松运行冗长的自定义命令。你可以将别名添加到 bashrc 或Linux 中运行的 shell的配置文件中,使别名永久生效。
当您尝试使用 sudo 运行别名时,就会出现问题。您会看到如下错误:
sudo: my_alias: command not found
这是一个例子。我up
为apt update
命令创建了一个别名。apt update 命令需要使用 sudo 运行。但如果我尝试运行sudo up
,它会给出错误:
你会认为,既然你以 root 用户身份运行,那么别名应该在 root 用户的 bashrc 中定义,即 /.bashrc。继续尝试,但我敢打赌它不会起作用。
让我向您展示一个使用 sudo 运行别名命令的巧妙技巧。
使用 sudo 访问权限运行 alias 命令
诀窍是像这样为 sudo 本身创建一个别名:
sudo='sudo '
在上述代码中,sudo 后面的空格(或者制表符,如果您喜欢的话)非常重要。现在,如果您使用 sudo 运行别名命令,它应该可以正常工作。
但为什么呢?为什么你只需要用 sudo 和空格替换 sudo 命令就可以了呢?答案在于别名的设计使用方式。
如果您参考bash 手册中的别名部分,您会看到,每个简单命令的第一个字(如果没有加引号)都会被检查,以查看它是否有别名。如果别名值的最后一个字符是空格或制表符,那么跟在别名后面的下一个命令字也会被检查是否具有别名扩展。
换句话说,在命令中,仅检查第一个单词是否为别名。但如果别名值末尾有空格或制表符,则还会检查命令的下一个单词是否为别名。
这就是为什么当您简单地运行 sudo my_alias 命令时,将 sudo 别名为“sudo ”,首先会检查 sudo 的别名。如果发现别名末尾有空格,系统就会检查下一个单词是否为别名。它也会找到这个单词的别名,这样您的别名命令就会按您希望的方式运行。
我希望你喜欢这个使用 sudo 运行别名的小技巧。欢迎提出任何问题或建议。