Perl脚本直接运行提示command not found 加perl前缀可正常运行求助
问题排查与解决方案
- 检查脚本可执行权限
执行ls -l myfoo.pl查看文件权限位,若权限字段中没有x(可执行)标识,运行chmod +x myfoo.pl添加可执行权限即可。 - 确认执行时是否携带正确路径
直接输入myfoo.pl执行时,系统仅会遍历PATH环境变量指定的目录查找对应文件,当前目录默认不在PATH中,当前目录下的脚本正确执行方式为输入相对路径./myfoo.pl,或是填写完整的绝对路径。你之前能通过(路径)/source.pl正常运行其他脚本,本质就是携带了有效路径触发的正常执行。 - 排查shebang行隐藏字符问题
即使head -1查看首行无异常,也可能存在Windows/DOS格式的换行符(\r)导致解释器路径识别错误,执行cat -A myfoo.pl查看首行,若行尾出现^M$标识,说明是换行符兼容问题,运行dos2unix myfoo.pl转换为Unix格式换行符即可修复。 - 优化shebang行兼容性
可以将首行解释器声明替换为#!/usr/bin/env perl,系统会自动匹配环境变量中默认的perl路径,避免不同发行版perl安装路径不一致导致的识别失败。
内容的提问来源于stack exchange,提问作者willie
相关产品推荐
相关产品推荐

