76 votes

Quelle est la différence entre les shebangs python avec /usr/bin/env plutôt qu'avec hard-path ?

J'avais l'habitude d'utiliser le shebang

#!/usr/bin/env python

Quand est-il préférable d'utiliser

#!/usr/bin/python

Quelle est la différence exacte entre eux ?

0 votes

Avez-vous essayé man env pour voir ce que le env L'application le fait ?

1 votes

@S.Lott je suppose env était un répertoire, pas un exécutable.

97voto

vartec Points 53382

#!/usr/bin/python est codé en dur pour toujours exécuter /usr/bin/python alors que #!/usr/bin/env python s'exécutera quel que soit le python serait par défaut dans votre environnement actuel (il prendra en compte par exemple $PATH vous pouvez vérifier quel interpréteur python sera utilisé avec which python ).

La deuxième voie ( #!/usr/bin/env python ) est préférable, car il ne dépend pas d'une installation particulière. Elle fonctionnera par exemple avec virtualenv des configurations ou des systèmes où il n'y a pas /usr/bin/python mais seulement par exemple /usr/local/bin/python .

1 votes

Indirection par env fonctionne également lorsque /usr/bin/python existe, mais n'est pas un véritable exécutable (par exemple, il peut s'agir d'un script de lancement)

2 votes

Cela implique-t-il qu'il est préférable d'utiliser #!/usr/bin/env perl sera plus polyvalent que l'habituel "shebang". #!/bin/perl ? Il me semble que les gens utilisent généralement #!/bin/perl en perl, mais #!/usr/bin/env python pour python. Pourquoi ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X