Mac执行start.sh脚本报错‘文件不存在’但文件实际存在的求助
解决 macOS 下 sudo 运行脚本提示文件不存在的问题
确认文件位置与权限
先执行ls -l start.sh,确认文件存在且权限位包含x(执行权限)。同时用pwd查看当前终端的绝对路径,和脚本实际存储的路径对比,确保没有进错目录。检查脚本开头的 Shebang 行
很多时候这种错误不是真的找不到脚本,而是脚本的解释器路径错误。用cat start.sh | head -1查看第一行:- 如果是 Bash 脚本,推荐用
#!/usr/bin/env bash(比#!/bin/bash兼容性更强,适配新版 macOS 的 Bash 路径) - 如果是 Node.js 脚本,用
#!/usr/bin/env node
若 Shebang 路径错误或缺失,sudo 会因找不到解释器而抛出“文件不存在”的误导性错误。
- 如果是 Bash 脚本,推荐用
使用绝对路径运行脚本
避免 sudo 环境下当前目录偏移的问题,先通过pwd获取脚本所在绝对路径(比如/Users/YourName/Desktop/script),然后执行:sudo /Users/YourName/Desktop/script/start.sh直接用解释器调用脚本
跳过 Shebang 的问题,直接指定解释器运行:- Bash 脚本:
sudo bash start.sh - Node.js 脚本:
sudo node start.sh
如果这样能正常运行,说明问题出在 Shebang 行。
- Bash 脚本:
排查是否为替身/快捷方式
macOS 桌面的“替身”不是真实文件,右键点击start.sh选择「显示简介」,查看「位置」字段是否与终端pwd输出一致,确保你操作的是真实脚本文件。
内容的提问来源于stack exchange,提问作者justnewbieorstmh
相关产品推荐
相关产品推荐

