我有一个 shell 脚本,它使用 sudo apt-get 安装几个程序,然后打开 vncserver,然后安装更多东西。
这有效:
#!/bin/sh
vncserver
>./my_script.sh
但这不起作用:
#!/bin/sh
sudo apt-get update
vncserver
>./my_script.sh
这也行不通:
#!/bin/sh
vncserver
>sudo ./my_script.sh
当它不起作用时,它会返回错误vncserver: Wrong type or access mode of /home/username/.vnc
。
有人这问题说这是一个已知问题。那么我如何在 my_script 中运行 vncserver?
答案1
您可以使用sudo -u
它将特定命令恢复为非 root 用户。
前任。:
$ cat myscript.sh
#!/bin/sh
whoami
sudo -u $SUDO_USER whoami
然后
$ sudo ./myscript.sh
[sudo] password for steeldriver:
root
steeldriver