Se você executar um arquivo diretamente
/path/to/script/filename
A linha shebang será pesquisada pelo intérprete para executá-la. Se você executar perl
ou sh
com um argumento, eles se comportarão conforme documentado: tente interpretar o arquivo como um script em Perl ou shell, respectivamente.
Quando você define explicitamente o interpretador a partir da linha de comando (como sh foo.pl
ou perl foo.pl
), a linha shebang não é usada para determinar o interpretador a ser executado. é analisado para possíveis opções, (por exemplo, com #!/usr/bin/perl -w
shebang, executando o script como perl foo.pl
ativará o -w
flag), mas não é usado para determinar qual programa deve interpretar o script.
Portanto, executar um script perl como sh foo.pl
significa que seu sistema tentará interpretá-lo como um script sh
, apesar da linha perl shebang.