我有一个 bash 脚本,它除其他功能外还使用了该gsettings
命令。在我看来,要使该命令起作用,用户必须使用图形会话登录,并且显然还必须以自己的身份(即非 root)执行该脚本。
我可以通过查看 TERM 变量来检查他们是否正在使用图形终端,但是如何确保脚本的执行者与使用图形会话登录的用户是同一个?
答案1
去检查谁已登录您可以使用
who
。去检查哪个用户运行了脚本:
ps aux | grep $0 | awk '{ print $1 }' | uniq
ps aux
:在第一列列出所有正在运行的进程,包括相应的用户。grep $0
:搜索当前脚本awk '{ print $1 }'
:仅打印第一列的内容uniq
:删除可能的重复项检查运行脚本的用户是否与登录用户相同:
LOGED_USER=$(who | awk '{ print $1 }') EXEC_USER=$(ps aux | grep $0 | awk '{ print $1 }' | uniq) if [ $LOGED_USER == $EXEC_USER ]; then echo "Same USER" else echo "Different USER" fi