in

Quand est-il préférable d’utiliser #! / Bin / bash au lieu de #! / Bin / sh dans un script Shell?

Lorsque vous créez un nouveau script shell, vous voulez vous assurer qu’il est aussi exempt de problèmes que possible, mais parfois il peut être un peu déroutant de savoir quel shebang est le meilleur pour vous. Sur cette note, le post de questions-réponses SuperUser d’aujourd’hui a la réponse à la question d’un lecteur confus.

La question

Le lecteur SuperUser Hendre veut savoir quand il est préférable d’utiliser plutôt que dans des scripts shell:

Quand est-il plus approprié d’utiliser plutôt que dans un script shell?

Quand est-il préférable d’utiliser plutôt que dans un script shell?

La réponse

Grawity, contributeur SuperUser, a la réponse pour nous:

En bref:

  • Il existe plusieurs shells qui implémentent un sur-ensemble du Spécification POSIX sh. Sur différents systèmes, il peut y avoir un lien vers ash, bash, dash, ksh, zsh, etc. Il sera toujours compatible sh, jamais csh ou fish.
  • Tant que vous vous en tenez uniquement aux fonctionnalités sh, vous pouvez (et probablement même devriez) utiliser et le script devrait fonctionner correctement, quel que soit le shell.
  • Si vous commencez à utiliser des fonctionnalités spécifiques à bash (c.-à-d. Des tableaux), vous devriez demander spécifiquement bash car, même s’il appelle déjà bash sur votre système, il peut ne pas être sur le système de tout le monde, et votre script ne fonctionnera pas là. La même chose s’applique à zsh et ksh, bien sûr.
  • Même si le script est uniquement destiné à un usage personnel, vous remarquerez peut-être que certains systèmes d’exploitation changent lors des mises à niveau. Par exemple, sur Debian, c’était bash, mais a été remplacé plus tard par le très petit tiret. Des scripts qui utilisaient des bashismes mais qui avaient soudainement éclaté.

Pourtant:

  • Ce n’est même pas correct. Sur différents systèmes, bash peut vivre dans, ou.
  • Une option plus fiable est, qui utilise. Bien que l’outil d’environnement lui-même ne soit pas non plus strictement garanti, il fonctionne toujours sur plus de systèmes que ne le fait.

Avez-vous quelque chose à ajouter à l’explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d’autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Pourquoi ~ représente-t-il le dossier personnel sur macOS et Linux?

Pourquoi ~ représente-t-il le dossier personnel sur macOS et Linux?

Comment ajouter des complications tierces à votre Apple Watch

Comment ajouter des complications tierces à votre Apple Watch