如何将别名传递给 sudo?

Mic*_*iño 41 sudo bash alias

我试过把我的别名放在~/.bash_profile, ~/.bashrc, /etc/profile, 和 中/etc/bashrc

我仍然无法执行以下操作:

alias zf2="php public/index.php"
Run Code Online (Sandbox Code Playgroud)

然后执行:

sudo zf2 orm:info
Run Code Online (Sandbox Code Playgroud)

问题似乎是我无法使用 visudo 将别名指定为命令——这会导致语法错误。

所以我无法调用:

sudo zf2 orm:info
Run Code Online (Sandbox Code Playgroud)

但是,我能够在 /usr/share/scripts/zf2 创建一个脚本,其中包含:

#!/bin/bash

alias zf2="php public/index.php"
zf2 $1
Run Code Online (Sandbox Code Playgroud)

并将此脚本添加为 visudo 中的命令。当此脚本位于最终用户的 PATH 中时,我可以执行

zf2 orm:info
Run Code Online (Sandbox Code Playgroud)

我有不同的别名zf2,我需要向最终用户公开。我更愿意维护别名而不是脚本集合。

Ste*_*ven 71

具有讽刺意味的是,解决方案是sudo从别名调用。

alias sd="sudo "
Run Code Online (Sandbox Code Playgroud)

注意:虽然不推荐,但您可以命名别名sudoalias sudo="sudo "

Bash 参考手册(别名)

如果别名值的最后一个字符是空白,则还检查别名之后的下一个命令字的别名扩展。

  • 我也许可以理解为什么有人会并且不会希望将其作为任何系统的默认设置。所要求的便利和期望,而不是对提升的特权更加小心。 (7认同)
  • `别名 sd="sudo"` 可能吗? (5认同)