macOS系统执行sudo运行.sh脚本时提示command not found错误如何解决
macOS执行shell脚本报command not found错误的原因与解决方案
运行命令:
sudo /Users/oliver/Desktop/vpn/natvpn.sh
系统返回报错:command not found: sudo: /Users/oliver/Desktop/vpn/natvpn.sh: command not found
已确认的正常配置:
whereis sudo返回/usr/bin/sudo,且PATH包含/usr/bin,sudo本身运行正常
错误原因
- 脚本无执行权限:macOS默认新建的.sh文件没有可执行权限,直接指定路径调用会触发找不到命令的报错
- 路径/文件名错误:路径拼写错误、文件名大小写不符(开启磁盘大小写敏感的场景下)、文件已被删除都会触发该报错
- shebang声明错误:脚本第一行的解释器声明路径错误、对应解释器不存在,也会导致系统识别为无效可执行文件
解决步骤
确认文件存在
运行命令校验路径有效性:ls -l /Users/oliver/Desktop/vpn/natvpn.sh
如果返回不存在提示,修正路径或文件名后再重试。添加可执行权限
文件存在的前提下,执行命令赋予执行权限:sudo chmod +x /Users/oliver/Desktop/vpn/natvpn.sh
完成后再运行原启动命令测试。修复shebang或手动指定解释器
如果上述操作后仍报错,打开脚本查看第一行的shebang声明,确保是#!/bin/bash或#!/bin/sh这类合法路径;也可以直接手动指定解释器运行,跳过shebang校验:sudo bash /Users/oliver/Desktop/vpn/natvpn.sh
内容的提问来源于stack exchange,提问作者Oliver Mulder
相关产品推荐
相关产品推荐

