Quelles sont les différences fondamentales entre les shells classiques * NIX et quels scénarios peuvent vous inciter à utiliser l'un sur l'autre? Je comprends que cela dépend en partie des préférences de l'utilisateur, mais je n'ai jamais utilisé que bash et je suis curieux de savoir lorsqu'un autre shell pourrait être utile.
De plus, y a-t-il un impact sur les scripts de shell écrits par l'utilisateur lors de l'exécution sous un shell ou un autre ou s'agit-il simplement de changer le shell en haut du fichier? Mon instinct dit que ce n'est pas si facile.
jsh
(ce qui n’est pas un shell java!), Qui manque de substitution variable comme${VAR#foo}
et${VAR%bar}
.tcsh
est plutôt populaire parmi les utilisateurs UNIX qui ont appris leurs techniques avant le mi-90 (qui a vu l’introduction des deux )bash
etzsh
, en particulier parmi les anciensC
développeurs UNIX + , qui ont commencé leur vie aveccsh
(rappel, le c en estcsh
synonyme duC
langage , qui était l’inspiration de ses différences avec les coquillages de style bourne). Voir aussi la programmation Csh considérée comme nuisible , que j’utilise souvent pour des astuces sur la magie profonde POSIX (en plus de ses arguments anti-csh).Il existe deux types de base de shell, sh (par exemple, bash) et csh (par exemple, tcsh). Pour une utilisation interactive, cela revient principalement à ce que vous êtes habitué. J'ai utilisé csh, puis tcsh, pendant des années et il serait difficile de changer de système, simplement parce que j'y suis tellement habitué. J'ai aussi utilisé bash, et je ne pense pas qu'il y ait de raison impérieuse de changer. Sauf peut-être si l'un ou l'autre n'est pas disponible sur les machines que vous utilisez régulièrement.
Pour la programmation, la syntaxe est différente. Vous ne pouvez pas simplement changer de shell, mais vous devez aussi changer la syntaxe du script. Pour le script, vous voulez utiliser sh ou bash. La syntaxe est beaucoup plus adaptée aux scripts, comme expliqué ici (merci à Riccardo Murri pour le lien. C’est un bon guide sur les scripts bash.
Si vous n'avez pas encore choisi de shell et que vous souhaitez écrire des scripts, j'utiliserais bash uniquement pour réduire le nombre de choses à apprendre.
la source
À l'époque, quand AT & T avait inventé UNIX, il y avait Bourne Shell, écrit par Steve Bourne. C'était assez basique et il manquait beaucoup d'outils que nous prenons pour acquis de nos jours.
AT & T ne faisant pas vraiment partie du marché UNIX, Berkelely a adopté à l’époque un système d’exploitation très basique qui a apporté quelques modifications à BSD UNIX. Parmi de nombreux changements, il y avait un nouveau shell, appelé csh, qui présentait de nombreuses améliorations par rapport à sh, notamment un meilleur contrôle du travail, une utilisation interactive, etc. Malheureusement, ils ont décidé que la syntaxe de programmation sh était nulle et ils ont créé leur propre copie (quelque peu mal) des styles de codage C. (Un coup de gueule classique est http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ ) Il y avait donc maintenant deux syntaxes.
Plus tard, ils ont apporté des améliorations à CSH en ajoutant la complétion par des onglets et d'autres éléments. Ceci est devenu tcsh, et si vous utilisez CSH, c'est probablement celui que vous utilisez.
AT & T a décidé que ce n’était pas totalement une entreprise UNIX et l’a perfectionné. David Korn (un gars sympa) a créé la coque Korn. Basé sur l'idée d'étendre la syntaxe du shell Bourne, il a ajouté beaucoup de choses pour les programmeurs et l'utilisation interactive. Il existe en fait quelques versions et vous verrez rarement des éléments tels que ksh88 et ksh93, indiquant les variantes.
Viennent ensuite la FSF et le système d’exploitation GNU. Ils voulaient créer leur propre système d’exploitation compatible avec UNIX, le Hurd, et souhaitaient un meilleur shell. Ils ont appelé bash, pour Bourne Again SHell. Les règles POSIX sont entrées à peu près à la même époque et ils voulaient créer le shell POSIX. Ils ont examiné la syntaxe du shell Bourne et les améliorations apportées au shell Korn, ainsi que le vol et l'extension des fonctionnalités interactives de tcsh. C'est devenu le shell de facto sous Linux, donc c'est très courant.
Il y a aussi le zsh, écrit pour être le shell "ultime". C'est aussi très courant dans le monde Linux. Il a étendu bash (et un peu pollinisé, quelques nouvelles choses sont retournées à bash).
Si je devais choisir un shell, je choisirais bash ou zsh. bash est peut-être dans quelques endroits plus nombreux que zsh. zsh est plus puissant, mais bash me convient. Le shell Bourne réel / bin / sh est disponible uniquement pour des raisons historiques. bash a à peu près tout ce que ksh a à offrir et plus encore. La syntaxe est plus propre que csh ou tcsh et offre de meilleures fonctionnalités que l'une ou l'autre.
Convertir un script dépend de quoi à quoi. Le style de shell Bourne (sh, ksh, bash, zsh) vers ou depuis le style csh (csh, tcsh) sera difficile. Passer de l'ancien au plus récent (/ bin / sh => bash, / bin / ksh => zsh) sera plus facile que l'inverse.
la source
Les deux branches principales des coques sont les dérivés de la coque Bourne (sh, bash, ksh, cendre, yash et zsh) et les dérivés de csh (tcsh et ... euh ... tcsh).
Je soupçonne (même si je n’ai pas de chiffres réels) que bash est le plus utilisé, il semble être le shell par défaut de la plupart des linux.
La plupart des choses écrites dans un dérivé d'une coquille de bourne fonctionneront probablement avec d'autres. La plupart des choses écrites dans un shell Bourne devront probablement être modifiées pour fonctionner sous csh ou tcsh.
Personnellement, j'ai utilisé ksh lorsque j'ai commencé, car c'était ce qui était sur le système que j'utilisais. J'utilise principalement bash maintenant.
la source
J'ai utilisé de nombreux obus au fil du temps. Pas quelque chose de super avancé, mais beaucoup de choses pratiques en matière de sysadmin et de programmation qui ont nécessité une personnalisation suffisante.
Je pense que zsh a plus d'options de personnalisation, du moins qu'auparavant, mais après l'avoir utilisé pendant plusieurs années, j'en ai eu assez des problèmes de stabilité et de codage des caractères. Bash est solide comme un roc, n'a jamais eu de problèmes similaires et il est installé partout.
la source