无法 运行 .sh 脚本在 linux 中的 sudo 下
Cannot run .sh script under sudo in linux
我有一个脚本 foo.sh 位于 /home/pi/Documents/Python 目录中。此 shell 脚本的目的是 运行 python 需要 root 权限的脚本,因为它必须重置 USB 设备。
脚本如下:
#!/bin/sh
export PATH="$PATH:/home/pi/.local/lib/python3.7"
python3 /home/pi/Documents/Python/foo.py
当我 运行 来自 Midnight Commander 的 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 下导致错误行为的问题是什么?
除非 foo.sh 位于 PATH 环境变量引用的目录中,否则环境将无法识别该命令,因此会出现错误
如果您在包含 foo.sh 脚本的目录中,请执行它:
sudo ./foo.sh
如果您在不同的目录中,请执行:
sudo /pathtosh/foo.sh
我可能弄错了(我手边没有 Linux 自动提款机,所以我无法验证),但如果我没记错的话 user_home
是 [=12] 的一部分=] 为该用户导出的变量。
当您使用命令 sudo
时,您代表 root
行事,它与您的 user_home
不同(== 当前用户),因此您的脚本在任何active PATH
中列出的目录(root
中的一个,因为您正在使用 sudo
命令)。
但是,应该可以运行成功执行以下命令:
$ sudo ./foo.sh
我希望这会有所启发。
我有一个脚本 foo.sh 位于 /home/pi/Documents/Python 目录中。此 shell 脚本的目的是 运行 python 需要 root 权限的脚本,因为它必须重置 USB 设备。
脚本如下:
#!/bin/sh
export PATH="$PATH:/home/pi/.local/lib/python3.7"
python3 /home/pi/Documents/Python/foo.py
当我 运行 来自 Midnight Commander 的 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 下导致错误行为的问题是什么?
除非 foo.sh 位于 PATH 环境变量引用的目录中,否则环境将无法识别该命令,因此会出现错误
如果您在包含 foo.sh 脚本的目录中,请执行它:
sudo ./foo.sh
如果您在不同的目录中,请执行:
sudo /pathtosh/foo.sh
我可能弄错了(我手边没有 Linux 自动提款机,所以我无法验证),但如果我没记错的话 user_home
是 [=12] 的一部分=] 为该用户导出的变量。
当您使用命令 sudo
时,您代表 root
行事,它与您的 user_home
不同(== 当前用户),因此您的脚本在任何active PATH
中列出的目录(root
中的一个,因为您正在使用 sudo
命令)。
但是,应该可以运行成功执行以下命令:
$ sudo ./foo.sh
我希望这会有所启发。