首页 > 解决方案 > 无法在 linux 的 sudo 下运行 .sh 脚本

问题描述

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

脚本如下:

#!/bin/sh
export PATH="$PATH:/home/pi/.local/lib/python3.7"
python3 /home/pi/Documents/Python/foo.py

当我从 Midnight Commander 运行 foo.py(在文件上设置光标并按 Enter 键)时,它可以正确导出路径,并且 python 脚本失败,因为它没有足够的权限来重置 USB 设备。我实际上已经制作了这个脚本来在 root 下运行 python 脚本,但是 root 需要首先设置一个使用模块的路径。但是,当我跑步时

sudo foo.sh

我收到一个答案:

sudo: foo.sh: command not found

我检查了权限并且 foo.sh 文件有 -rwxr-xr-x

sudo python3 

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

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

标签: linuxshellsudo

解决方案


除非 foo.sh 位于 PATH 环境变量引用的目录中,否则环境将无法识别该命令并因此出现错误

如果您在包含 foo.sh 脚本的目录中,请使用以下命令执行它:

sudo ./foo.sh

如果您在不同的目录中,请执行:

sudo /pathtosh/foo.sh

推荐阅读