我确信这是一个非常基本的问题,但恐怕我无法让它发挥作用或理解发生了什么。
我有一个通常用来运行的节点项目
sudo npm start
我正在尝试创建一个 bash 脚本来启动这个程序。
我尝试了几种变化:
su myname -c "npm run start"
sudo su myname -c "npm run start"
su myname -c "sudo npm start"
但它们似乎都在没有超级用户权限的情况下执行命令。从我所做的研究来看,
sudo su myname -c "npm run start"
是正确的,但它不起作用(它可以运行但没有权限)。有人能给我指出正确的方向吗?
答案1
不要sudo
在脚本中使用纯文本,而是使用 root 权限运行整个脚本并sudo -u YOURUSERNAME
执行命令没有如果确实有必要,则需要 root 权限。
编写如下脚本:
#!/bin/bash
npm start
保存它,使其可执行chmod +x /path/to/script
,然后使用 root 权限启动它:
sudo /path/to/script # from a terminal
gksudo /path/to/script # without terminal (e.g. for a starter)
kdesudo /path/to/script # without terminal, KDE equivalent
这就是所需要的全部了。
您可以向脚本添加更多命令,例如,您可以检查它是否以 root 身份启动,否则退出(感谢PerlDuck):
[[ $EUID -ne 0 ]] && echo "This script must be run as root." && exit 1