1465 votes

Shebang bash préféré?

 #!/usr/bin/env bash
#!/bin/bash
#!/bin/sh
#!/bin/sh -
etc...
 

Y a-t-il quelqu'un objectivement mieux que les autres pour la plupart des utilisations? Je me rappelle vaguement depuis longtemps que l'ajout d'un tiret à la fin empêche quelqu'un de passer une commande à votre script, mais ne trouve aucun détail à ce sujet.

1917voto

l0b0 Points 10719

Vous devriez utiliser #!/usr/bin/env bash pour la portabilité . Et sh n'est pas bash .

92voto

goldilocks Points 6181

/bin/sh est généralement un lien vers la configuration par défaut du shell, que beaucoup ou la plupart des endroits sera/usr/bin/bash. Toutefois, l'original de la Bourne shell est - sh, donc si votre script utilise quelques - bash (2e génération, "Bourne Again sh"), alors vous devez être plus précis et d'utiliser le plus tard. De cette façon, sur les systèmes où bash n'est pas installé, votre script ne s'exécute pas.

Je comprends, il y a peut être une passionnante trilogie de films à propos de cette évolution...mais c'est peut-être ouï-dire.

6voto

glenn jackman Points 69748

Cela dépend vraiment de la façon dont vous écrivez vos scripts bash. Si /bin/sh est symlinked vers bash, quand bash est invoqué comme sh , certaines fonctionnalités ne sont pas disponibles: http://www.gnu.org/software/bash/manual/bashref. html # Bash-POSIX-Mode

Si vous souhaitez utiliser des fonctionnalités non-POSIX propres à bash, utilisez #!/bin/bash

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