linux - 无法在 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 下导致错误行为的问题是什么?
解决方案
除非 foo.sh 位于 PATH 环境变量引用的目录中,否则环境将无法识别该命令并因此出现错误
如果您在包含 foo.sh 脚本的目录中,请使用以下命令执行它:
sudo ./foo.sh
如果您在不同的目录中,请执行:
sudo /pathtosh/foo.sh
推荐阅读
- javascript - 这个网站可以在 WordPress 上构建吗?
- laravel - Laravel Eloquent 模型范围多个条件
- r - R-shiny 下载按钮说明
- reactjs - GraphQL _ Apollo-client - 直接在组件中传递 guery 变量
- ionic3 - Ionic/Angular:从另一个网站读取任何 HTML 页面
- reactjs - React - 在 componentDidMount 中访问上下文
- asp.net - 创建单页应用程序的最佳堆栈/解决方案,允许多个用户实时贡献并查看更改
- python - 给定序列的均值和方差,如何生成具有确定性随机游走和漂移的时间序列数据?
- google-sheets - 使用 API 密钥更改数据
- azure - 2个域名是否可以将一个Azure Web应用程序与应用程序网关一起使用?如何?