Perl-在Windows中编辑,但直接在Unix shell上运行?
我用Textpad编写我的Perl代码(我相信这是Windows中唯一可用的)。我通过显式调用Perl解释器在LinuxCmd提示符下运行它,例如“perlscript.pl”。我想知道是否可以像“/script.pl”中那样简单地运行它。当我在Windows中添加shebang时,Linux提示符会抱怨“command not found”,但是如果我用Perl调用它,它可以正常工作,并且在我完成脚本后也可以正常工作,因此问题似乎是shebang没有被正确解析。有什么建议吗?为什么其余的Windows格式化代码可以工作,而shebang却不能工作?文件的第一行是Perl-在Windows中编辑,但直接在Unix shell上运行?,windows,perl,shell,shebang,Windows,Perl,Shell,Shebang,我用Textpad编写我的Perl代码(我相信这是Windows中唯一可用的)。我通过显式调用Perl解释器在LinuxCmd提示符下运行它,例如“perlscript.pl”。我想知道是否可以像“/script.pl”中那样简单地运行它。当我在Windows中添加shebang时,Linux提示符会抱怨“command not found”,但是如果我用Perl调用它,它可以正常工作,并且在我完成脚本后也可以正常工作,因此问题似乎是shebang没有被正确解析。有什么建议吗?为什么其余的Win
#!/usr/bin/perl<CR><LF>
是行终止符,因此操作系统尝试启动/usr/bin/perl
并成功。您的问题是,与其他操作系统(LF或\n
)相比,Windows更喜欢使用不同的行结束约定(CRLF或\r\n
)。您的编辑器正在创建默认使用\r\n
行结尾的文件
shebang是由操作系统解析的,它不像Perl那样宽容命令末尾的错误\r
。它尝试运行不存在的/usr/bin/perl\r
您的文本编辑器应该能够保存带有Unix行结尾的脚本。这不会导致在Windows上使用它时出现问题,尽管一些Windows文本编辑器(包括记事本)无法正确识别行尾。这将使它在Linux上正常工作。也许你应该说你的shebang是什么样子的?据我们所知,您的shebang可能是
#!C:\Perl\Perl.exe
。是否已设置脚本文件的可执行权限chmod u+x script.pl
@choroba除非我弄错了,否则如果这是问题所在,错误将是权限被拒绝
@TLP:True。我真傻。太棒了——事实上,Textpad允许以Unix格式保存文件。谢谢
#!/usr/bin/perl<LF>