Quand est-ce que #!/bin/bash
plus approprié que #!/bin/sh
dans un Shell Shell ?
Réponse
Trop de publicités?
Michael Felt
Points
121
- sh (pour la plupart des cas), bash si nécessaire (ou ksh, ou autre).
Le chemin le plus sûr, lorsqu'il est codé en dur, serait /usr/bin/ shellOfChoice
mais une nouvelle convention que j'essaie d'utiliser en permanence maintenant - comme les "emplacements par défaut" via un changement de PATH peuvent changer est :
!/usr/bin/env sh ou
!/usr/bin/env bash
ou par exemple, perl scripts
!/usr/bin/env perl -w
Bien sûr, lorsque vous avez une raison pour qu'un script ne prenne JAMAIS automatiquement un nouveau PATH alors continuez à l'avoir codé en dur - et alors /usr/bin/quelque chose devrait être le chemin le plus probable à utiliser.
- Réponses précédentes
- Plus de réponses
56 votes
Lorsque vous utilisez
bash
plutôt qu'aux fonctions et à la syntaxe de lsh
les fonctions et la syntaxe.6 votes
Véase stackoverflow.com/questions/5725296/
3 votes
Si cela peut aider quelqu'un, j'ai remarqué que
vim
mettra en lumièrebash
-ismes si votre script possède la fonction#!/bin/sh
shebang. Je le change seulement enbash
si les choses deviennent suffisamment compliquées pour nécessiter des fonctions de base.0 votes
@SeldomNeedy Certaines des choses qu'il met en évidence par défaut fonctionnent bien dans n'importe quel Shell POSIX.
$(...)
est particulièrement odieuse. De plus, certains d'entre eux sont subtils [<(...)
ycmd >& file
n'ont pas de surbrillance d'erreur, par exemple, ils n'ont simplement pas de surbrillance spéciale pour ce qu'ils signifient, avec ou sansg:is_bash
]0 votes
@Random832 Il semble qu'il y ait eu de l'activité sur ce sujet récemment en l'outil de suivi des problèmes de vim .
0 votes
@Random832 Si les deux derniers idiomes que vous avez listés ne sont pas valides dans les shells Bourne (ce que vim suppose asinément sous le nom de
#!/bin/sh
sauf sig:is_bash
oug:is_posix
sont définies), serait-il judicieux de soumettre des questions à ce sujet ?0 votes
@SeldomNeedy De nos jours, on peut passer beaucoup de temps sans tomber sur un ancien Unix propriétaire (Solaris, HPUX, AIX, etc.), mais la plupart d'entre eux ont un système de gestion de la sécurité.
/bin/sh
(et les utilitaires default-$PATH) dont le comportement a été gelé circa 1992 afin qu'aucun des Shell Shell poussiéreux de leurs clients ne soit cassé par les changements de POSIX.1-1996 (ne parlons même pas de -2001 ou -2008 !), je ne recommande pas d'écrire nouveau Shell Shell pour faire face à cela - suffisamment bien pour y faire face si/quand cela se présente - mais en tant que personne qui utilisé pour Je suis confronté à cela tous les jours, et le comportement de Vim m'a séduit.