Avec cet été pluvieux et froid, je me suis dit pourquoi pas changer son Shell par défaut sous MAC (Merci Korben pour l’astuce).Pour découvrir d’autres astuces sous Linux, n’oubliez pas mon tutoriel : Astuces pour utiliser Linux.
C’est quoi un Shell ?
Le Shell (ou interface système en français) est un programme qui reçoit des commandes informatiques saisie par un utilisateur à partir de son clavier pour les envoyer au système d’exploitation qui se chargera de les exécuter.
Sous Mac et Linux le logiciel qui interprétera les commandes s’appelle Terminal et sous Windows, CMD.
Au tout début de l’informatique le Shell était la seule interface entre l’homme et la machine. Maintenant avec les différents périphériques comme la souris, les pads, etc tous les ordinateurs utilisent une interface graphique appelé aussi GUI (pour Graphical User Interface).
Il faut savoir qu’il existe une multitude de Shell (chacun y trouvera son goût). Sauf que la plupart d’entre nous utilise celui fourni pas défaut. Cela va changer.
Voici sous Mac le Shell :
Voici une liste de différents interpréteurs de commande (liste reprise sur le blog de Korben) :
- Almquist shell (ash) : écrit en remplacement du Bourne Shell, sous licence BSD ; souvent utilisé dans des environnements aux ressources limitées. Les sh de FreeBSD, NetBSD (et leurs dérivés) sont basés sur des cendres qui ont été améliorées pour être conformes à POSIX.
- Bourne Shell (sh) : Le shell Bourne était le shell par défaut de la version 7 d’Unix. De nombreux systèmes de type Unix continuent à avoir /bin/sh – qui est l’interpréteur de commandes Bourne, ou un lien (symbolique ou en dur) vers un interpréteur de commandes compatible.
- Bourne-Again shell (bash) : écrit dans le cadre du projet GNU pour fournir un sur-ensemble de fonctionnalités du Bourne Shell. Ce shell est souvent pré-installé et est le shell interactif par défaut pour les utilisateurs sur la plupart des systèmes Linux et macOS.
- C shell (csh) : Shell Unix créée par Bill Joy alors qu’il était étudiant à l’Université de Californie, Berkeley, à la fin des années 1970. Il a été largement distribué, à commencer par la version 2BSD de la Berkeley Software Distribution (BSD) pour la première fois en 1978.
- Debian Almquist shell (dash) : un remplacement moderne du shell ash dans Debian et Ubuntu.
- Korn shell (ksh) : écrit par David Korn à partir des sources du shell Bourne alors qu’il travaillait aux Bell Labs.
- Public domain Korn shell (pdksh) : Shell Unix qui a été développé par David Korn aux Bell Labs au début des années 1980 et annoncé sur USENIX le 14 juillet 1983. Le développement initial était basé sur le code source du shell Bourne.
- MirBSD Korn shell (mksh) : un descendant du ksh d’OpenBSD et de pdksh, développé dans le cadre de MirOS BSD.
- TENEX Shell (tcsh) : Shell Unix basé sur et compatible avec csh. Il s’agit essentiellement d’un interpréteur de commandes C avec une complétion en ligne de commande programmable, une édition en ligne de commande et quelques autres fonctionnalités. Il s’agit de l’interpréteur de commandes racine natif pour les systèmes basés sur BSD comme FreeBSD.
- Z shell (zsh) : une coquille relativement moderne qui est rétrocompatible avec le bash. C’est le shell par défaut dans macOS depuis la version 10.15 de Catalina.
- Fish Shell : Fish est un shell en ligne de commande complet (comme bash ou zsh) qui est intelligent et convivial. Fish prend en charge des fonctions puissantes comme la coloration syntaxique, les autosuggestions et les complétions d’onglet qui fonctionnent simplement, sans rien à apprendre ou à configurer. Si vous voulez rendre votre ligne de commande plus productive, plus utile et plus amusante, sans avoir à apprendre un tas d’arcanes syntaxiques et d’options de configuration, alors Fish est peut-être ce que vous cherchez ! Je l’ai mis à la fin car nous allons essayer de l’installer sur notre MAC.
Connaitre le Shell que l’on utilise par défaut.
Généralement sous MacOS c’est le Shell ZSH ou BASH en fonction de sa version d’OS et sous Ubuntu c’est BASH.
Pour connaitre facilement le Shell que vous utilisez (sous Linux ou MAC), il suffit d’utiliser cette commande :
# ps -p $$
Sous Linux :
Sous MAC :
Afficher les Shell d’installés sur votre système.
Pour consulter les Shell qui sont installés sur votre système d’exploitation, vous devez utiliser la commande suivante :
# cat /etc/shells
Sous Linux :
Sous MAC :
Changer son Shell par défaut sous Mac
Pour changer de Shell, rien de plus simple. Il suffit d’utiliser la commande ci-dessous et de la faire pointer vers le chemin complet du shell souhaité. Par exemple sur mon MAC je souhaite passer du BASH au ZSH, je tape :
# chsh -s /bin/zsh
Fermer le terminal et rouvrez-le. Votre Shell a changé.
Installer un autre Shell.
Il existe de nombreux Shells. Aujourd’hui nous allons voir comment installer Fish-Shell.
Contrairement aux autres Shells, Fish-Shell ne suit pas la norme POSIX, mais il appartient toujours à peu près à la même famille.
Voici quelques-unes des caractéristiques particulières de Fish-Shell :
- Interface utilisateur étendue : coloration syntaxique, autosuggestions, remplissage des onglets et listes de sélection navigables et filtrables.
- Aucune configuration nécessaire : Fish-Shell est conçu pour être prêt à l’emploi immédiatement, sans nécessiter de configuration compliquée.
- Scripting facile : de nouvelles fonctions peuvent être ajoutées à la volée. La syntaxe est facile à apprendre et à utiliser.
Pour l’installer le plus simple est d’utiliser Homebrew ou MacPorts sont des gestionnaires de paquets sous MAC.
Pour ce tutoriel nous allons utiliser Homebrew.
# brew install fish
Commencer avec Fish-Shell.
Vous êtes à l’invite de Bash, avec des Fish-Shell d’installé, et vous n’avez aucune idée de la façon de vous en servir. Pour utiliser Fish-Shell, vous devez entrer l’invite fish. Comment faire ? Tapez la commande fish et vous verrez votre invite changer.
A ce stade, vous êtes prêt à utiliser Fish-Shell. La meilleure façon de le faire est de commencer à taper une commande. Vous verrez que Fish-Shell fait un excellent travail pour compléter la commande, en se basant sur votre historique. Par exemple, si je commence à taper ssh, Fish complétera la commande avec la dernière entrée correspondante de l’historique de bash.
Une chose vraiment sympa que vous pouvez faire avec Fish-Shell est d’obtenir des suggestions de commandes, en fonction de ce que vous tapez. Disons, par exemple, qu’il y a un outil ssh que vous voulez utiliser, mais que vous ne vous souvenez pas du nom de la commande (mais vous savez qu’elle commence par « ssh »). Tapez ssh et appuyez sur la touche de tabulation. Fish vous présentera des suggestions, dont l’une pourrait être la commande que vous recherchez
Configurer Fish-Shell.
L’une des tâches que vous devez absolument entreprendre est la configuration. Fish est un outil incroyablement puissant et pratique à utiliser. Cependant, il offre de nombreuses possibilités de personnalisation qui peuvent être ajustées avec l’outil de configuration en ligne. Pour accéder à l’interface web, tapez la commande fish_config. Appuyez sur la touche Entrée de votre clavier et votre navigateur par défaut s’ouvrira sur la page de configuration de Fish.
Si vous souhaitez changer d’apparence, aller dans l’onglet Colors puis sélectionner un thème (1) puis n’oubliez pas de cliquer sur Theme Set (2) pour valider les changements.
Je vous recommande aussi de modifier votre prompt de Fish afin que les différences entre celui-ci et le prompt standard ne soient pas si subtiles. Pour ce faire, cliquez sur l’onglet Prompt, faites défiler jusqu’à ce que vous trouviez un style qui vous convienne puis sélectionnez ce prompt et cliquez sur le bouton Set Prompt.
Une fois les modifications effectuées, fermez la fenêtre du navigateur (ou l’onglet), retournez à la fenêtre de votre terminal et appuyez sur Entrée. La nouvelle configuration de l’invite sera établie et vous serez prêt à partir.
Il existe de nombreuses autres options à configurer dans l’outil web. À partir de là, vous pouvez également configurer des abréviations (alias) pour les commandes. Cela peut également être fait à partir de l’invite de Fish, mais l’utilisation de l’interface web rend la tâche un peu plus facile. Par exemple, vous envoyez régulièrement un ssh à un serveur particulier avec la commande :
# ssh -v root@192.168.01
Avec des abréviations, vous pourriez raccourcir cela à, disons sshdyjix (Il faut trouver une cohérence dans l’alias). Avec ce système, il vous suffirait de taper sshdyjix, d’appuyer sur entrée et la commande complète s’exécutera pour vous connectez sur votre VPS chez Dyjix.
Pour créer une abréviation, lancez la commande fish_config (à partir de l’invite de commande), allez dans l’onglet Abbreviations de l’outil web, puis tapez votre abréviation dans la zone de texte de gauche et la commande complète dans la zone de texte de droite. Cliquez sur le bouton Enregistrer et votre abréviation est prête.
Changer son Shell par défaut sous Mac par Fish-Shell
Nous allons appliquer ce que nous avons vu plus haut. C’est-à-dire utiliser Fish-Shell par défaut dans notre terminal. Nous allons devoir faire quelques modifications pour appliquer ce que nous avons vu plus haut.
Vous devez rajouter l’entrée /usr/local/bin/fish dans le fichier /etc/shells.
Pour activer Shell-Fish comme shell par défaut, il faut utiliser la commande suivante :
# chsh -s /usr/local/bin/fish
Désinstaller Fish-Shell.
Si vous souhaitez désinstaller Fish-Shell, assurez-vous d’abord que le Fish ne soit pas votre shell par défaut. Lancez chsh -s /bin/bash si vous n’êtes pas sûr et pour revenir au shell BASH.
Ensuite, faites ce qui suit (en supposant que fish a été installé dans /usr/local) :
# rm -Rf /usr/local/etc/fish /usr/local/share/fish ~/.config/fish # rm /usr/local/share/man/man1/fish*.1 # cd /usr/local/bin # rm -f fish fish_indent