在脚本中使用 sudo 找不到命令

在脚本中使用 sudo 找不到命令

我正在尝试在 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在非标准路径上,或者至少不在根路径上。有几种方法可以解决这个问题。

  1. 使用完整路径node

    • 使用查找完整路径which node

    • 如果说它在/home/user/bin/node然后打电话sudo /home/user/bin/node app.js

    • 或者正如 @UlrichSchwarz 建议的那样,您可以通过命令替换将两者结合起来:sudo $(which node) app.js

    • sudo请记住您需要该位置的读取/执行权限的用户,当您sudo执行以下操作时,这并不是什么大问题root


  1. 使用保留环境变量的选项sudo进行调用-E

相关内容