Python .command文件shebang配置触发zsh bad interpreter错误如何解决?
问题解决指南
核心根因
报错信息中的^M是Windows风格换行符(CRLF)的回车符标识,shell解析脚本首行shebang时会将该不可见字符计入解释器路径,导致系统尝试查找不存在的/usr/bin/python3^M路径,触发报错。你之前写的#!/usr/local/bin python3属于拼写错误,路径中缺少斜杠,系统会将目录/usr/local/bin当作可执行文件运行,因此返回权限报错。
分步解决方法
- 第一步:修复文件换行符
两种可选方案,任选其一即可:- 使用dos2unix工具转换:
先执行brew install dos2unix安装工具,再运行dos2unix digits_exec.command完成换行符转换 - 用系统自带sed工具直接修改:
运行sed -i.bak 's/\r$//' digits_exec.command,执行后会自动生成后缀为.bak的备份文件,确认脚本运行正常后可删除备份文件
- 使用dos2unix工具转换:
- 第二步:修正shebang配置
将脚本首行改为你需要的Python 3.9.6对应路径:#!/usr/local/bin/python3
注意路径中不要遗漏斜杠,也不要有多余空格。 - 第三步:确认执行权限
执行chmod 755 digits_exec.command保证当前用户拥有脚本执行权限即可。
避免后续重复出现问题
打开VSCode的设置页面,搜索files.eol配置项,将值设置为\n,后续新建的所有脚本文件默认都会使用Unix风格的LF换行符,不会再出现同类问题。如果是修改已有文件,也可以点击VSCode右下角状态栏的换行符标识,将CRLF手动切换为LF后保存即可。
内容的提问来源于stack exchange,提问作者serax
相关产品推荐
相关产品推荐

