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

Table des matières:

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

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

Vidéo: Quelle est la différence entre Bash, Zsh et d’autres shells Linux?
Vidéo: code secret très important rétablira la batterie de votre téléphone bon état - YouTube 2024, Mars
Anonim
La plupart des distributions Linux incluent le shell bash par défaut, mais vous pouvez également basculer vers un autre environnement shell. Le zsh est une alternative particulièrement populaire, et il existe d'autres coquillages, tels que le frêne, le dash, le poisson et le tcsh. Mais quelle est la différence et pourquoi y en a-t-il autant?
La plupart des distributions Linux incluent le shell bash par défaut, mais vous pouvez également basculer vers un autre environnement shell. Le zsh est une alternative particulièrement populaire, et il existe d'autres coquillages, tels que le frêne, le dash, le poisson et le tcsh. Mais quelle est la différence et pourquoi y en a-t-il autant?

Que font les coquillages?

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 Shell Thompson, développé par les Bell Labs et commercialisé en 1971. Depuis, les environnements Shell s'appuient sur le concept, ajoutant diverses améliorations, fonctionnalités et vitesses.

Par exemple, Bash propose l’achèvement des commandes et des noms de fichiers, des fonctions de script avancées, un historique des commandes, des couleurs configurables, des alias de commandes et diverses autres fonctions qui n’étaient pas disponibles en 1971 lors de la publication du premier shell.

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 de shell exécutées dans l’environnement de shell.

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

Le progéniteur le plus en vue des coques modernes est la coque Bourne, également appelée «sh», qui porte le nom de son créateur, Stephen Bourne, qui travaillait pour les Bell Labs d’AT & T. Publié 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 canalisation, des variables, du test des conditions et du bouclage, ainsi que d'autres fonctionnalités. Il n'offrait pas beaucoup de personnalisation aux utilisateurs et ne supportait pas les subtilités modernes telles que les alias, l'achèvement des commandes et les fonctions du shell (bien que ce dernier ait été ajouté par la suite).

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 permettant aux utilisateurs de contrôler leurs systèmes, tels que les alias (raccourcis pour les commandes longues), les capacités de gestion des tâches, l'historique des commandes, etc. Il a été calqué sur le langage de programmation C, dans lequel le système d'exploitation Unix a été écrit. Cela impliquait également que les utilisateurs du shell Bourne devaient apprendre le C pour pouvoir entrer des commandes. De plus, csh avait pas mal de bugs qui devaient être corrigés par les utilisateurs et les créateurs sur une longue période. Les gens ont fini par utiliser le shell Bourne pour les scripts car ils géraient mieux les commandes non interactives, mais restaient coincés dans le shell C pour une utilisation normale.

Au fil du temps, de nombreuses personnes ont corrigé des bogues et ajouté des fonctionnalités au shell C, aboutissant à une version améliorée de csh appelée «tcsh». Mais csh était toujours la valeur par défaut sur les ordinateurs Unix et avait ajouté des fonctionnalités non standard. David Korn de Bell Labs a travaillé sur KornShell, ou «ksh», qui tentait d’améliorer la situation en assurant une compatibilité ascendante avec le langage du shell Bourne, tout en ajoutant de nombreuses fonctionnalités à partir du shell csh. Il a été publié en 1983, mais sous une licence propriétaire. Ce n’était pas un logiciel libre jusqu’aux années 2000, quand il a été distribué sous diverses licences open-source.
Au fil du temps, de nombreuses personnes ont corrigé des bogues et ajouté des fonctionnalités au shell C, aboutissant à une version améliorée de csh appelée «tcsh». Mais csh était toujours la valeur par défaut sur les ordinateurs Unix et avait ajouté des fonctionnalités non standard. David Korn de Bell Labs a travaillé sur KornShell, ou «ksh», qui tentait d’améliorer la situation en assurant une compatibilité ascendante avec le langage du shell Bourne, tout en ajoutant de nombreuses fonctionnalités à partir du shell csh. Il a été publié en 1983, mais sous une licence propriétaire. Ce n’était pas un logiciel libre jusqu’aux années 2000, quand il a été distribué sous diverses licences open-source.

La naissance de bash

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

Bash a été amélioré au cours des décennies depuis sa première publication en 1989, mais il reste le shell par défaut de la plupart des distributions Linux. Il s’agit également du shell par défaut sur le Mac OS d’Apple et est disponible pour l’installation sur Windows 10 de Microsoft.

Nouveaux coquillages: cendre, tiret, zsh et poisson

Bien que la communauté Linux se soit installée sur Bash ces dernières années, les développeurs n’ont pas cessé de créer de nouveaux shells lorsque Bash a été lancé pour la première fois il y a 28 ans.

Kenneth Almquist a créé un clone de shell Bourne, appelé 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 autre branche 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é sur lequel BusyBox est installé, ou tout autre appareil équipé de la suite logicielle BusyBox, il utilise un code issu de cendres.

Debian a développé un environnement shell basé sur les cendres et l'a appelé «tiret». Conçu pour être compatible avec POSIX et léger, il est donc plus rapide que Bash, mais n’aura pas toutes ses fonctionnalités. Ubuntu utilise le shell de tableau de bord comme shell par défaut pour les tâches non interactives, accélérant les scripts de shell et les autres tâches exécutées en arrière-plan.Ubuntu utilise toujours bash pour les shells interactifs, de sorte que les utilisateurs disposent toujours d'un environnement interactif complet.
Debian a développé un environnement shell basé sur les cendres et l'a appelé «tiret». Conçu pour être compatible avec POSIX et léger, il est donc plus rapide que Bash, mais n’aura pas toutes ses fonctionnalités. Ubuntu utilise le shell de tableau de bord comme shell par défaut pour les tâches non interactives, accélérant les scripts de shell et les autres tâches exécutées en arrière-plan.Ubuntu utilise toujours bash pour les shells interactifs, de sorte que les utilisateurs disposent toujours d'un environnement interactif complet.
L'un des nouveaux coquillages 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 plus encore. Par exemple, zsh offre une vérification orthographique, la possibilité de surveiller les connexions / déconnexions, certaines fonctionnalités de programmation intégrées telles que le bytecode, la prise en charge de la notation scientifique dans la syntaxe, permet l'arithmétique en virgule flottante et bien d'autres fonctionnalités.
L'un des nouveaux coquillages 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 plus encore. Par exemple, zsh offre une vérification orthographique, la possibilité de surveiller les connexions / déconnexions, certaines fonctionnalités de programmation intégrées telles que le bytecode, la prise en charge de la notation scientifique dans la syntaxe, permet l'arithmétique en virgule flottante et bien d'autres fonctionnalités.
Le shell interactif, ou «poisson», lancé en 2005, est un autre nouveau shell plus récent. Sa syntaxe unique en ligne de commande a été conçue pour être un peu plus facile à apprendre, mais n’est dérivé ni du shell Bourne ni du shell C. C’est une idée intéressante, mais ce que vous apprenez en utilisant du poisson ne vous aidera pas nécessairement à utiliser des coquillages bash et autres dérivés de Bourne.
Le shell interactif, ou «poisson», lancé en 2005, est un autre nouveau shell plus récent. Sa syntaxe unique en ligne de commande a été conçue pour être un peu plus facile à apprendre, mais n’est dérivé ni du shell Bourne ni du shell C. C’est une idée intéressante, mais ce que vous apprenez en utilisant du poisson ne vous aidera pas nécessairement à utiliser des coquillages bash et autres dérivés 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. Assoyez-vous devant une distribution Linux - ou même sur un Mac - et vous aurez presque toujours un environnement shell bash. Bash possède quelques fonctionnalités avancées, mais vous ne les utiliserez probablement pas à moins de programmer des scripts shell.

Sur les systèmes Linux embarqués ou BSD, vous obtiendrez le shell ash. Mais ash est un shell basé sur Bourne et est largement compatible avec bash. Tout savoir que vous avez de l'utilisation de bash sera transféré à l'aide 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 chaque shell que vous rencontrerez est basé sur Bourne et fonctionne de manière similaire, y compris zsh.

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

Si vous connaissez bash, vous pouvez passer à zsh sans apprendre une syntaxe différente. Vous obtiendrez simplement des fonctionnalités supplémentaires. Si vous connaissez zsh, vous pouvez passer à bash sans apprendre une syntaxe différente. Vous n’avez tout simplement pas accès à ces fonctionnalités.

«Oh My 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 perdre de temps à peaufiner les choses.
«Oh My 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 perdre de temps à peaufiner les choses.

Il y a aussi d'autres coquilles. Par exemple, le shell tcsh existe toujours et reste une option. FreeBSD utilise tsch comme shell racine par défaut et cendres comme shell interactif par défaut. Si vous utilisez régulièrement la programmation en C, tsch pourrait être un meilleur choix pour vous. Cependant, il est loin d’être aussi communément 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, supposons que vous souhaitiez essayer zsh sur Ubuntu. Vous devez exécuter les commandes suivantes pour l’installer puis le lancer:

sudo apt install zsh zsh

Vous seriez alors assis à un shell zsh. Type”

exit

”Au shell pour le quitter et revenir à votre shell actuel.

Ceci est juste temporaire. Chaque fois que vous ouvrez une nouvelle fenêtre de terminal ou que vous vous connectez à votre système via la ligne de commande, vous verrez votre shell par défaut. Pour changer le shell que vous voyez lorsque vous vous connectez (appelé shell de connexion), vous pouvez généralement utiliser la commande
Ceci est juste temporaire. Chaque fois que vous ouvrez une nouvelle fenêtre de terminal ou que vous vous connectez à votre système via la ligne de commande, vous verrez votre shell par défaut. Pour changer le shell que vous voyez lorsque vous vous connectez (appelé shell de connexion), vous pouvez généralement utiliser la commande

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, supposons que nous voulions passer au shell zsh. Nous exécuterons 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 défaut jusqu’à ce que nous ayons exécuté le

chsh

commande et l'a changé.

Conseillé: