我正在浏览一个/etc/rc.d/init.d/sendmail文件(我知道这几乎从未使用过,但我正在为考试而学习),并且我对&&和||运算符感到有些困惑。我已经阅读了它们可以在以下语句中使用的地方:
if [ test1 ] && [ test2 ]; then
echo "both tests are true"
elif [ test1 ] || [ test2 ]; then
echo "one test is true"
fi
Run Code Online (Sandbox Code Playgroud)
但是,此脚本显示单行语句,例如:
[ -z "$SMQUEUE" ] && SMQUEUE="QUEUE"
[ -f /usr/sbin/sendmail ] || exit 0
Run Code Online (Sandbox Code Playgroud)
这些似乎使用&&and||运算符来根据测试得出响应,但我无法挖掘有关这些运算符的这种特殊用途的文档。任何人都可以解释这些在这种特定情况下的作用吗?
我正在使用Gnome3 Flashback桌面环境附带的Trisquel GNU/Linux-Libre 。
我知道我可以通过sudo&以 root 身份运行 GUI 应用程序,gksudo但我想知道如何在 的帮助下以 root 身份运行 GUI 应用程序pkexec?
当我尝试运行gedit(或像任何其他应用程序:nautilus)由pkexec gedit然后,它会提示输入密码进行验证: -

输入密码后,它退出并出现错误:-
$ pkexec gedit
error: XDG_RUNTIME_DIR not set in the environment.
(gedit:6135): Gtk-WARNING **: cannot open display:
Run Code Online (Sandbox Code Playgroud)
所以,似乎显示环境出了问题。
我也试过,DISPLAY=:0 pkexec gedit但不起作用。
以下信息可从man pkexec:-
PROGRAM 将运行它的环境将设置为最小的已知和安全环境,以避免通过 LD_LIBRARY_PATH 或类似机制注入代码。此外,PKEXEC_UID 环境变量设置为调用 pkexec 的进程的用户 ID。因此,pkexec 将不允许您以其他用户身份运行 X11 应用程序,因为 $DISPLAY 和 $XAUTHORITY 环境变量未设置。如果操作上的 org.freedesktop.policykit.exec.allow_gui 注释设置为非空值,则将保留这两个变量;但是,这是不鼓励的,并且应该仅用于遗留程序。
现在我不知道该怎么做才能做到这一点。
因此,请帮助我了解如何通过pkexec. …