in

Quelle est la différence entre Bash, Zsh et d’autres shells Linux?

La plupart des distributions Linux incluent le shell bash par défaut, mais vous pouvez également passer à un autre environnement shell. Zsh est une alternative particulièrement populaire, et il existe d’autres coquilles, comme les cendres, les tirets, les poissons et les tcsh. Mais quelle est la différence et pourquoi y en a-t-il autant?

Que font les coquilles?

Lorsque vous vous connectez à la ligne de commande ou que vous lancez une fenêtre de terminal sous Linux, le système lance le programme shell. Les shells offrent un moyen standard d’étendre l’environnement de ligne de commande. Vous pouvez remplacer le shell par défaut par un autre, si vous le souhaitez.

Le premier environnement shell était le Thompson Shell, développé chez Bell Labs et sorti en 1971. Depuis lors, les environnements Shell s’appuient sur le concept, ajoutant une variété de nouvelles fonctionnalités, fonctionnalités et améliorations de vitesse.

Par exemple, Bash propose la complétion des commandes et des noms de fichiers, des fonctionnalités de script avancées, un historique des commandes, des couleurs configurables, des alias de commandes et une variété d’autres fonctionnalités qui n’étaient pas disponibles en 1971 lorsque le premier shell a été publié.

Le shell est également utilisé en arrière-plan par divers services système. Les distributions Linux incluent de nombreuses fonctions écrites sous forme de scripts shell. Ces scripts sont des commandes et d’autres fonctions avancées de script shell exécutées via l’environnement shell.

Shells menant à Bash: sh, csh, tsh et ksh

Le progéniteur le plus important des obus modernes est le Bourne Shell – également connu sous le nom de «sh» – qui a été nommé d’après son créateur Stephen Bourne qui a travaillé chez AT&T’s Bell Labs. Sorti en 1979, il est devenu l’interpréteur de commandes par défaut sous Unix en raison de sa prise en charge de la substitution de commandes, de la tuyauterie, des variables, des tests de condition et des boucles, ainsi que d’autres fonctionnalités. Il n’offrait pas beaucoup de personnalisation pour les utilisateurs et ne prenait pas en charge les subtilités modernes telles que les alias, la complétion de commandes et les fonctions shell (bien que cette dernière ait finalement été ajoutée).

Le shell C, ou «csh», a été développé à la fin des années 1970 par Bill Joy de l’Université de Californie à Berkley. Il a ajouté de nombreux éléments interactifs avec lesquels les utilisateurs pouvaient contrôler leurs systèmes, tels que des alias (raccourcis pour les commandes longues), des capacités de gestion des tâches, l’historique des commandes, etc. Il a été modelé sur le langage de programmation C, dans lequel le système d’exploitation Unix lui-même a été écrit. Cela signifiait également que les utilisateurs du shell Bourne devaient apprendre le C pour pouvoir y entrer des commandes. De plus, csh avait pas mal de bugs qui ont dû être corrigés par les utilisateurs et les créateurs sur une longue période de temps. Les gens ont fini par utiliser le shell Bourne pour les scripts car il gérait mieux les commandes non interactives, mais collait avec le shell C pour une utilisation normale.

Au fil du temps, beaucoup de gens ont corrigé des bogues et ajouté des fonctionnalités au shell C, aboutissant à une version améliorée de csh connue sous le nom de «tcsh». Mais csh était toujours la valeur par défaut dans les ordinateurs basés sur Unix et avait ajouté des fonctionnalités non standard. David Korn de Bell Labs a travaillé sur le KornShell, ou «ksh», qui a essayé d’améliorer la situation en étant rétrocompatible avec le langage du shell Bourne mais en ajoutant de nombreuses fonctionnalités du shell csh. Il a été publié en 1983, mais sous une licence propriétaire. Ce n’était pas du logiciel libre avant les années 2000, quand il a été publié sous diverses licences open source.

La naissance de bash

L’interface du système d’exploitation portable pour Unix, ou POSIX, était une autre réponse aux implémentations propriétaires et trépidantes de csh. Il a réussi à créer une norme pour l’interprétation des commandes (entre autres) et a finalement reflété de nombreuses fonctionnalités de KornShell. Dans le même temps, le projet GNU tentait de créer un système d’exploitation gratuit et compatible Unix. Le projet GNU a développé un shell de logiciel libre pour faire partie de son système d’exploitation libre et l’a nommé «Bourne Again Shell», ou «bash».

Bash a été amélioré au cours des décennies depuis sa première version en 1989, mais c’est toujours le shell par défaut sur la plupart des distributions Linux aujourd’hui. Il s’agit également du shell par défaut sur le macOS d’Apple et est disponible pour une installation sur Windows 10 de Microsoft.

Coquilles plus récentes: cendre, tiret, zsh et poisson

Alors que la communauté Linux s’est installée sur Bash dans les années qui ont suivi, les développeurs n’ont pas arrêté de créer de nouveaux shells lorsque Bash a été publié pour la première fois il y a 28 ans.

Kenneth Almquist a créé un clone de Bourne Shell connu sous le nom de Shell Almquish, A Shell, «ash», ou parfois simplement «sh». il était également compatible POSIX et est devenu le shell par défaut de BSD, une branche différente d’Unix. Le shell ash est plus léger que bash, ce qui le rend populaire dans les systèmes Linux embarqués. Si vous avez un téléphone Android rooté avec BusyBox installé – ou tout autre appareil avec la suite de logiciels BusyBox – il utilise le code de ash.

Debian a développé un environnement shell basé sur ash et l’a appelé «dash». Il est conçu pour être compatible POSIX et léger, il est donc plus rapide que Bash, mais n’aura pas toutes ses fonctionnalités. Ubuntu utilise le shell du tableau de bord comme shell par défaut pour les tâches non interactives, accélérant les scripts shell et d’autres tâches exécutées en arrière-plan. Cependant, Ubuntu utilise toujours bash pour les shells interactifs, de sorte que les utilisateurs disposent toujours de l’environnement interactif complet.

L’un des nouveaux shells les plus populaires est le shell Z, ou «zsh». Créé par Paul Falstad en 1990, zsh est un shell de style Bourne qui contient les fonctionnalités que vous trouverez dans bash, et bien plus encore. Par exemple, zsh a la vérification orthographique, la possibilité de surveiller les connexions / déconnexions, certaines fonctionnalités de programmation intégrées comme le bytecode, la prise en charge de la notation scientifique dans la syntaxe, permet l’arithmétique à virgule flottante, et plus de fonctionnalités.

Un autre shell plus récent est le Friendly Interactive Shell, ou «fish», sorti en 2005. Il possède une syntaxe de ligne de commande unique conçue pour être un peu plus facile à apprendre, mais qui n’est dérivée ni du shell Bourne ni du shell C. C’est une idée intéressante, mais ce que vous apprenez en utilisant des poissons ne vous aidera pas nécessairement à utiliser bash et d’autres coquilles dérivées de Bourne.

Lequel devriez-vous choisir? (et pourquoi Zsh est populaire)

Vous n’avez pas besoin de choisir un shell. Votre système d’exploitation choisit votre shell par défaut pour vous, et ce choix est presque toujours bash. Asseyez-vous devant une distribution Linux – ou même un Mac – et vous aurez presque toujours un environnement shell bash. Bash a pas mal de fonctionnalités avancées, mais vous ne les utiliserez probablement pas à moins que vous ne programmiez des scripts shell.

Sur les systèmes Linux embarqués ou BSD, vous vous retrouverez avec le shell ash. Mais ash est un shell basé sur Bourne et est largement compatible avec bash. Toute connaissance que vous avez de l’utilisation de bash sera transférée à l’utilisation d’un shell ash ou dash, bien que certaines fonctionnalités de script avancées ne soient pas disponibles dans ce shell léger.

Presque tous les shell que vous rencontrerez sont basés sur Bourne et fonctionnent de la même manière, y compris zsh.

C’est pourquoi zsh est populaire. Ce nouveau shell est compatible avec bash, mais comprend plus de fonctionnalités. Le shell zsh offre une correction orthographique intégrée, une complétion de ligne de commande améliorée, des modules chargeables qui agissent comme des plug-ins pour votre shell, des alias globaux qui vous permettent d’aliaser les noms de fichiers ou tout autre élément sur la ligne de commande au lieu de simplement des commandes, et plus de support thématique. C’est comme bash, mais avec de nombreux extras, des fonctionnalités supplémentaires et des options configurables, vous apprécierez peut-être si vous passez beaucoup de temps sur la ligne de commande.

Si vous êtes familier avec bash, vous pouvez passer à zsh sans apprendre une autre syntaxe – vous obtiendrez simplement des fonctionnalités supplémentaires. si vous êtes familier avec zsh, vous pouvez passer à bash sans apprendre une syntaxe différente – vous n’aurez tout simplement pas accès à ces fonctionnalités.

« Oh mon ZSH»Est un outil qui vous aide à activer plus facilement les plug-ins zsh et à basculer entre les thèmes prédéfinis, en personnalisant rapidement votre shell zsh sans passer des heures à peaufiner les choses.

Il y a aussi d’autres coquilles. Par exemple, le shell tcsh est toujours là et est toujours une option. FreeBSD utilise tsch comme shell racine par défaut et ash comme shell interactif par défaut. Si vous utilisez la programmation C régulièrement, tsch pourrait être une meilleure solution pour vous. Cependant, il est loin d’être aussi couramment utilisé que bash ou zsh.

Comment basculer entre les coquilles

Il est facile de passer à un nouveau shell pour l’essayer. Installez simplement le shell à partir du gestionnaire de paquets de votre distribution Linux et tapez la commande pour lancer le shell.

Par exemple, disons que vous voulez essayer zsh sur Ubuntu. Vous exécuteriez les commandes suivantes pour l’installer, puis le lancer:

sudo apt install zsh

zsh

Vous seriez alors assis devant un shell zsh. Taper  » exit ”Au niveau du shell pour le quitter et revenir à votre shell actuel.

C’est juste temporaire. Chaque fois que vous ouvrez une nouvelle fenêtre de terminal ou que vous vous connectez à votre système en ligne de commande, vous verrez votre shell par défaut. Pour changer le shell que vous voyez lorsque vous vous connectez (connu sous le nom de shell de connexion), vous pouvez généralement utiliser le chsh , ou « Changer de Shell », commande.

Pour utiliser cette commande, vous devez d’abord trouver le chemin complet de votre shell avec la commande which. Par exemple, disons que nous voulions passer au shell zsh. Nous exécuterions la commande suivante:

which zsh

Sur Ubuntu, cela nous indique que le binaire zsh est stocké dans / usr / bin / zsh.

Exécutez la commande suivante, entrez votre mot de passe et vous serez invité à choisir un nouveau shell de connexion:

chsh

Selon la commande ci-dessus, nous entrerions /usr/bin/zsh . Le shell zsh serait alors notre valeur par défaut jusqu’à ce que nous exécutions le chsh commande et l’a changé en arrière.

Laisser un commentaire

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

Comment mettre à jour l’application météo iPhone sur une connexion mobile

Comment désactiver la fonctionnalité de verrouillage du poste de travail (Fenêtre + L) sous Windows

Comment désactiver la fonctionnalité de verrouillage du poste de travail (Fenêtre + L) sous Windows