Joh*_*lla 26 bash sudo shell-script
我有一个脚本,它可以让我对背光亮度进行细粒度控制,并且需要sudo
运行。本质上是这样的:
backlight="/sys/class/backlight/acpi_video0/brightness"
echo $1 | tee $backlight
Run Code Online (Sandbox Code Playgroud)
并住在~/bin/backlight-adjust
. 该脚本需要sudo
特权,因为tee $backlight
正在写入特权位置。因此,如果不使用sudo
.
这种方法有一个问题,因为我不能随便跑sudo backlight-adjust
,因为~/bin
不在$PATH
的sudo
环境下,只有在我的环境。所以我必须跑步sudo env "PATH=$PATH" backlight-adjust
或类似的东西。
或者,我可以这样写:
backlight="/sys/class/backlight/acpi_video0/brightness"
echo $1 | sudo tee $backlight
Run Code Online (Sandbox Code Playgroud)
并提示我输入密码。
第二种方法对我来说效果更好,因为我不必记得输入 sudo;它会提示我。我可以保持我的$PATH
完好无损。总体而言,这感觉更方便,但有什么理由我不应该采用第二种方式吗?
(我正在运行 Xubuntu 14.04,我的 shell 是 GNU bash 4.2.45,如果这有区别的话。)
ter*_*don 27
就个人而言,我会使用不同的方法。为您的脚本创建一个别名。将此行添加到您的~/.bashrc
(或其他 shell 中的等效项)
alias backlight-adjust='sudo ~/bin/backlight-adjust'
Run Code Online (Sandbox Code Playgroud)
这样,您就不必担心记得使用它运行它,sudo
也不需要将 添加sudo
到脚本中。它将对您完全透明,只需在您尝试运行时询问您的密码即可backlight-adjust
。
我不明白为什么它可能是不正确的——尽管我通常更喜欢命令不会向我提问,因此它们是可编写脚本的。您可以调整/etc/sudoers
以使其sudo
在没有密码的情况下工作。
但是......为什么不添加
chgrp one-of-your-groups-here /sys/class/backlight/acpi_video0/brightness
chmod g+w /sys/class/backlight/acpi_video0/brightness
Run Code Online (Sandbox Code Playgroud)
在你/etc/rc.local
和忘记sudo
?
(在 Ubuntu 中,如果您可以使用,sudo
您就在sudo组中,因此您可以使用它chgrp sudo /sys...
并对此感到满意。)