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