我有一个脚本foo.sh位于/home/pi/Documents/Python目录中。这个shell脚本的目的是运行python脚本,因为它需要根权限,因为它必须重置usb设备。
该脚本如下:
#!/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需要首先为使用的模块设置一个路径。但是当我跑的时候
sudo foo.sh我得到的答复是:
sudo: foo.sh: command not found我已经检查了权限,并且foo.sh文件具有-rwxr-xr-x。
sudo python3 输入终端也可以正常工作,并打开python解释器。
在sudo下导致错误行为的问题是什么?
发布于 2020-12-21 15:50:46
我可能弄错了(我手头没有Linux,因此无法验证),但如果我正确地回忆起,user_home是为该用户导出的PATH变量的一部分。当您使用命令sudo时,您代表的是与您的root (当前用户==)不同的user_home,因此在active PATH (因为使用sudo命令)中列出的目录中找不到您的脚本。
但是,应该可以成功地运行以下命令:
$ sudo ./foo.sh我希望这能给我们一些启示。
发布于 2020-12-21 15:50:28
除非foo.sh位于PATH环境变量引用的目录中,否则环境将无法识别该命令,从而导致错误。
如果您在带有foo.sh脚本的目录中,请使用以下方法执行它:
sudo ./foo.sh如果您位于另一个目录中,请使用以下方法执行:
sudo /pathtosh/foo.shhttps://stackoverflow.com/questions/65395654
复制相似问题