![在脚本中使用 sudo 找不到命令](https://linux22.com/image/89590/%E5%9C%A8%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%20sudo%20%E6%89%BE%E4%B8%8D%E5%88%B0%E5%91%BD%E4%BB%A4.png)
我正在尝试在 bash 脚本中执行 sudo 命令。
#!/bin/bash
sudo node app.js
这让我震惊:
sudo: node: command not found
如果我尝试仅执行 node app.js (没有 sudo ),它运行正常。
如果我尝试运行sudo -h
,它会打印 sudo 帮助。
但是,当我尝试时sudo node app.js
它会抛出错误。
答案1
听起来像是node
在非标准路径上,或者至少不在根路径上。有几种方法可以解决这个问题。
使用完整路径
node
使用查找完整路径
which node
如果说它在
/home/user/bin/node
然后打电话sudo /home/user/bin/node app.js
或者正如 @UlrichSchwarz 建议的那样,您可以通过命令替换将两者结合起来:
sudo $(which node) app.js
sudo
请记住您需要该位置的读取/执行权限的用户,当您sudo
执行以下操作时,这并不是什么大问题root
使用保留环境变量的选项
sudo
进行调用-E
sudo -E node app.js
这将使您保持
$PATH
以前的状态sudo
您可以看到
sudo
联机帮助页以获取更多信息:http://linux.die.net/man/8/sudo