Je viens d'écrire du code Python de test dans test.py
, et je le lance comme suit:
perl test.py
Au bout d'un moment, j'ai réalisé mon erreur. Je dis "après un certain temps", car le code Python est en fait correctement exécuté, comme dans l'interpréteur Python!
Pourquoi mon Perl interprète-t-il mon Python? test.py
ressemble à ça:
#!/usr/bin/python
...Python code here...
Fait intéressant, si je fais le contraire (c'est-à-dire appeler python something.pl
), j'obtiens beaucoup d'erreurs de syntaxe.
#!
début du fichier. En effet si j'enlève le she-bang, j'obtiens le comportement attendu. N'est-ce pas une mauvaise idée du point de vue de la sécurité, de toute façon?Réponses:
De perlrun ,
Par exemple,
$ cat a #!/bin/cat meow $ perl a #!/bin/cat meow
la source
#! /usr/bin/env foo
.indir
était un programme conçu pour exécuter indirectement d'autres programmes. Je me souviens qu'il était censé être particulièrement utile dans les situations setuid où le système d'exploitation ne fournissait pas nativement vous aidez beaucoup, et / ou peut-être dans des situations où le noyau du système d'exploitation vous limitait à 32 lignes de commande de caractères. "