首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在linux中sudo下运行.sh脚本

无法在linux中sudo下运行.sh脚本
EN

Stack Overflow用户
提问于 2020-12-21 15:39:52
回答 2查看 1.3K关注 0票数 2

我有一个脚本foo.sh位于/home/pi/Documents/Python目录中。这个shell脚本的目的是运行python脚本,因为它需要根权限,因为它必须重置usb设备。

该脚本如下:

代码语言:javascript
复制
#!/bin/sh
export PATH="$PATH:/home/pi/.local/lib/python3.7"
python3 /home/pi/Documents/Python/foo.py

当我从午夜指挥官(在文件上设置光标并按enter键)运行foo.py时,它正确地导出路径,并且python脚本失败,因为它没有足够的权限来重置usb设备。实际上,我已经让这个脚本在root下运行python脚本,但是root需要首先为使用的模块设置一个路径。但是当我跑的时候

代码语言:javascript
复制
sudo foo.sh

我得到的答复是:

代码语言:javascript
复制
sudo: foo.sh: command not found

我已经检查了权限,并且foo.sh文件具有-rwxr-xr-x。

代码语言:javascript
复制
sudo python3 

输入终端也可以正常工作,并打开python解释器。

在sudo下导致错误行为的问题是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-21 15:50:46

我可能弄错了(我手头没有Linux,因此无法验证),但如果我正确地回忆起,user_home是为该用户导出的PATH变量的一部分。当您使用命令sudo时,您代表的是与您的root (当前用户==)不同的user_home,因此在active PATH (因为使用sudo命令)中列出的目录中找不到您的脚本。

但是,应该可以成功地运行以下命令:

代码语言:javascript
复制
  $ sudo ./foo.sh

我希望这能给我们一些启示。

票数 0
EN

Stack Overflow用户

发布于 2020-12-21 15:50:28

除非foo.sh位于PATH环境变量引用的目录中,否则环境将无法识别该命令,从而导致错误。

如果您在带有foo.sh脚本的目录中,请使用以下方法执行它:

代码语言:javascript
复制
sudo ./foo.sh

如果您位于另一个目录中,请使用以下方法执行:

代码语言:javascript
复制
sudo /pathtosh/foo.sh
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65395654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档