Comparaison des shells Unix

9

Parmi les principaux shells Unix (bash, ksh, tcsh, zsh, autres?), Existe-t-il des raisons impérieuses de les utiliser les uns par rapport aux autres?

  • Quel est le plus interactif / convivial en ligne de commande?
  • Quel est le plus propice / intuitif pour l'écriture de scripts?
  • Existe-t-il des fonctionnalités intégrées majeures qu'un shell offre que d'autres ne proposent pas?
  • Certains de ces shells sont-ils vraiment bons pour un type de fonction, mais pas pour un autre? Ou sont-ils tous assez bien équilibrés / flexibles?
  • Est-ce simplement une question de préférence personnelle?

Je peux créer ce wiki communautaire si quelqu'un le souhaite.

Andy White
la source

Réponses:

17

Courant:

  • bash- Bourne à nouveau shell, shell par défaut dans la plupart des distributions Linux. Caractéristiques décentes;
  • zsh - le plus riche en fonctionnalités, mais encore rarement utilisé;
  • ksh - shell par défaut dans Solaris, AIX et quelques autres unités;
  • tcsh - shell par défaut dans divers unités de saveur * BSD;

Historique:

  • sh- coque Bourne d'origine (sortie en 1977). Obsolète par bash;
  • csh- coque C d'origine (sortie en 1978). Obsolète par tcsh et ksh;

Notez que bash, ksh et zsh dérivent de la syntaxe sh, tandis que tcsh dérive de la syntaxe csh. Ce sont deux syntaxes assez différentes.

Le graphique des fonctionnalités (wiki).

vartec
la source
La plupart des scripts sont généralement écrits pour être conformes à sh, car le lancement d'un script via sh est généralement beaucoup plus rapide que bash.
Mikeage
Comment ça? Sous Linux / bin / sh est un lien symbolique vers / bin / bash.
vartec
2
/ bin / sh n'est pas toujours un lien symbolique vers / bin / bash
Brad Gilbert
1
Lorsque vous instanciez bash en tant que "sh", il s'exécute dans un mode "sh" qui prend en charge un sous-ensemble de commandes bash. Je crois que la syntaxe "sh" est un standard POSIX.
duffbeer703
Sur Debian, vous pouvez utiliser 'dash' comme substitut de '/ bin / sh'.
drybjed
9

fish est une nouvelle coque qui est peut-être plus intéressante que les autres, non pas parce qu'elle a nécessairement plus de fonctionnalités, mais parce qu'elles fonctionnent juste par défaut et parce que fish s'efforce d'être utilisable.

Quelques captures d'écran ( 1 , 2 , 3 , 4 ) suffisent à donner une idée générale.

fish est maintenant le shell par défaut sur mon Mac au travail. Allez comprendre.

Peter Hilton
la source
2

Si vous allez apprendre un shell autre que sh/ bash, vous pourriez aussi bien y aller zsh. Je ne pense pas que quiconque conteste sérieusement que ce soit le plus puissant et le plus riche en fonctionnalités des coques alternatives; que ce soit juste un gonflement est, bien sûr, encore à débattre.

J'ai entendu de bonnes choses fish, mais je n'ai jamais fait l'effort de les déranger.

Les admins que je connais considèrent cshet tcshsont des abominations qui devraient être évitées à tout prix, et je suis d'accord avec eux bien qu'ils n'aient jamais été contraints de me mettre à travers l'un ou l'autre des obus.

kquinn
la source
2

Je recommanderais de bien connaître bash car c'est l'un des plus courants (généralement le Linux par défaut). Personnellement, j'adore zsh comme mon shell interactif. Il a de grandes fonctionnalités de finition. Par exemple, vous pouvez définir une liste d'hôtes et lorsque vous faites quelque chose comme ssh Ser [tab], il saura essayer de tabuler la saisie automatique de l'un de ces hôtes. Il a également un globage récursif, donc si vous voulez trouver tous les fichiers jpeg dans le sous-répertoire courant et que vous pouvez utiliser ls -ld **/*.jpg. Il y a beaucoup de fonctionnalités amusantes avec zsh (recherche les fichiers .zshrc des gens), et vous pouvez le régler sur 'compatible bash', il est donc facile de basculer entre les deux. Si vous combinez cela avec l'écran GNU, vous pourriez trouver que la ligne de commande devient un vrai plaisir de travailler avec.

Kyle Brandt
la source
1

N'oubliez pas votre autre question Shell Unix / Linux le plus courant - le shell le plus populaire est probablement le plus populaire pour une raison ;-)

Pour ce que ça vaut, la plupart des gens ne s'éteignent pas fréquemment entre les coques, il sera donc difficile d'obtenir une comparaison complète des différentes options; vous serez plus susceptible de voir différentes personnes épouser les vertus de leurs coquilles préférées. D'après le peu que j'ai entendu parler des différents shells, ils offrent tous certaines des mêmes fonctionnalités de base (comme la redirection d'E / S, l'historique des commandes, etc.), donc les préférences personnelles sont probablement un grand composant.

David Z
la source
1

Une raison convaincante d'utiliser ZSH qui n'a pas été mentionnée est le mode vi et le mode emacs .

Pour ceux qui aiment utiliser leur mémoire musculaire vi dans la coquille, c'est une fonctionnalité de tueur.

Et pour ceux qui préfèrent emacs, vous pouvez également utiliser ces raccourcis clavier, mais les vrais croyants emacs diraient probablement qu'emacs est leur shell préféré.

;-)

Somantra
la source
0

La préférence pour une utilisation quotidienne est vraiment une question de goût personnel, cependant, lorsque j'écris des scripts, j'essaie d'être conforme à Posix pour des raisons de portabilité.

Vincent De Baere
la source
0

Tout comme Heads Up: Ubuntu utilise par défaut "sh" à "dash", ce qui a entraîné des problèmes dans le passé avec la compatibilité POSIX. Apparemment, les commandes d'écho diffèrent légèrement.

lImbus
la source