我有一个简单的 Hello World perl 脚本。
#!/usr/bin/perl
print 'Hello world.';
Run Code Online (Sandbox Code Playgroud)
如果我通过 运行它perl <file_name>
,它工作正常,但它失败了我通过sh <file_name>
.
我对第一行的理解是它调用了 perl shell(类似于 #!/usr/bin/bash 将调用一个 bash shell)。那么这两个命令之间究竟有什么区别呢?
我发现这个线程http://ubuntuforums.org/showthread.php?t=1133334指出sh <file_name>
“在这种情况下,你根本不运行 Perl,而是运行 shell,它会调用程序‘打印’。” 如果是这种情况,则 #! 只是被解释为评论。如果是这样,它是否完全需要?
(我知道我可以 chmod +x 文件并直接运行它,但我只想知道我使用的两种方法之间的区别)