周三下午,我在终端里敲下chmod +x hello.py,又输入./hello.py,屏幕却弹出一行刺眼的红色:Permission denied。
755权限明明给了,文件名也没错,问题出在哪?
![]()
折腾了二十分钟才发现,罪魁祸首是第一行的shebang。当脚本缺少有效的解释器路径时,内核会尝试直接执行这个文件,结果必然是权限拒绝。补上#!/usr/bin/env python3或者精确的#!/usr/bin/python3,重新chmod一次,程序终于跑了起来。
这个坑的隐蔽之处在于,它跟权限本身毫无关系。你在机器A上写的脚本,移到机器B上就可能触发——因为Python路径变了,或者环境变量不同。/usr/bin/env的优势正是动态查找解释器,硬编码路径则更快但不够灵活。
很多开发者习惯复制粘贴旧脚本的头部,却忘了检查目标机器的实际环境。一个小细节,能让调试时间从两分钟变成两小时。
你遇到过类似的shebang陷阱吗?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.