【发布时间】:2014-12-16 11:43:01
【问题描述】:
我有多个 Perl 脚本,其中 shebang 行已过时。也就是说,shebang 指向的是旧版本的 Perl。
每条路径旧:
#!/data/oracle10.0/perl/bin/perl
新版Perl在
#!/data/**oracle11.0**/perl/bin/perl
我已将 perl 命令软链接到新版本 perl 的位置。
perl -> /data/oracle11.0/perl/bin/perl
现在,shebang 指向旧版本,perl 命令指向新版本。
所以,当我执行perl sample.pl 时,shebang 会被忽略。
我写了一些示例脚本来看看。当我使用 perl 命令时,似乎忽略了 shebang 行。但我记得旧版本的 perl 不是这种情况(Shebang 被认为超过了perl 命令)。
所以我的问题是,新版本的 perl(5.10) 和旧版本 (5.8) 对于 shebang 行有不同的行为吗?新版的Perl如果传给perl命令会忽略shebang行吗?
【问题讨论】:
-
从 cmd 行运行
which perl以检查您实际使用的是什么。chmod 755 script.pl; ./script.pl从 shebang 强制 perl。 -
Perl 总是扫描 shebang 行以获取其他命令行参数,但它不会
exec其他 Perl。 shebang 线的目标消费者是你的 shell。