Les systĂšmes d'exploitation fonctionnant sur un noyau Linux disposent tous d'un shell. À l'origine, sur les systĂšmes Unix, l'interprĂ©teur de commandes par dĂ©faut Ă©tait "sh". Celui-ci donna naissance Ă  de nombreuses variantes : "csh", "tcsh" ou bien "ksh" ... Mais aujourd'hui c'est Bash, s'inspirant de "sh", "ksh", et de "csh", qui est le plus utilisĂ© bien que "zsh" devient une alternative de plus en plus prisĂ©e des Linuxiens et utilisateurs de WSL.

Comment changer le shell de votre utilisateur Linux ?

Vous venez d'installer Linux et vous souhaitez changer le shell par défaut de votre utilisateur Linux ?

Que vous soyez sur Ubuntu, Debian, RedHat ou Suze, la commande magique pour changer de shell sous Linux est :

$chsh

L'aide mnémotechnique pour se souvenir de cette commande est trÚs simple:

  • "ch" pour "change"
  • "sh" pour "shell".

Une fois la commande exécutée, il vous suffira de saisir le chemin de votre nouveau shell pour qu'il soit modifié sur l'utilisateur courant.

Comment changer le shell des nouveaux utilisateurs créés ?

Pour que la modification s'applique Ă  l'ensemble des utilisateurs crĂ©Ă©s sur l'environnement, le fichier "/etc/adduser.conf" doit ĂȘtre modifiĂ© et la variable d'environnement DSHELL doit ĂȘtre changĂ©e avec le chemin du shell Ă  appliquer Ă  tous les nouveaux utilisateurs.

DSHELL=/bin/bash

Comment changer le shell de tous les utilisateurs ?

Si vous avez des droits "root" et que vous souhaitez modifier violemment les shells des utilisateurs existants, vous pouvez toujours Ă©diter le fichier "/etc/passwd" de votre systĂšme.

shell-passwd

Le shell par défaut est précisé dans la derniÚre colonne du fichier.
Faites cependant trÚs attention à ne pas corrompre ce fichier, gardez précieusement une sauvegarde avant de tenter des modifications hasardeuses.

Comment bloquer le shell de certains comptes ?

Pour des raisons de sécurité, sachez qu'il est possible de bloquer les connexions shell d'un compte Linux en précisant comme shell "/usr/sbin/nologin" ou "/bin/false".

La différence entre ces deux techniques est que la commande "nologin" permet de retourner un message clair à l'utilisateur comme "This account is currently not available". Ce message est d'ailleurs éditable depuis le fichier "/etc/nologin.txt". Alors que la commande "false" bloquera tout simplement la connexion sans informations précises du refus.

Quels sont les shells alternatifs ?

Dans la liste des shell alternatifs Ă  Bash, la mode est aux shells fonctionnant autour de Zsh.

Voici une liste de shells non exhaustive se basant sur Zsh :

ohmyzsh-1

Ces shells apportent une surcouche d'intelligence pour permettre une plus forte productivité au travers des nombreux plugins proposés par ces shells.

Ces shells sont pratiques si vous utilisez au quotidien des commandes complexes comme Git, Azure cli ...

Si vous ĂȘtes fan Powershell (et un peu dingue), sachez qu'il est aussi possible d'utiliser Powershell comme shell par dĂ©faut sous Linux.

Le shell intelligent : Prochaine innovation technologique ?

La prochaine innovation des shells sera dans l'utilisation d'algorithmes utilisant de l'intelligence artificielle pour simplifier l'utilisation des commandes Linux basiques.

Dans le domaine, IBM a lancé le projet CLAI qui vise à moderniser le shell et de le rendre plus accessible au travers d'une syntaxe textuelle. Vous pouvez découvrir quelques exemples de CLAI au travers de la page de présentation du projet.

CLAI peut comprendre des commandes textuelles comme :

  • "grep for all files with "string" in this directory, print details and line numbers"
  • "extract all images from the file into this directory"
  • ....

Pour le moment le projet est expĂ©rimental, mais peut ĂȘtre installĂ© assez facilement sous un environnement Linux.

En conclusion

AprĂšs 50 ans d'existance, les Shells vont Ă©voluer pour offrir plus de contrĂŽle et d'aide aux utilisateurs.
Il est probable que des shells intelligents soient développés d'ici les prochaines années pour permettre l'analyse et la vérifications des commandes saisies afin de limiter les risques de fausses manipulations et d'anticiper des problÚmes de sécurité.
Le projet CLAI d'IBM est un bon exemple qui va dans ce sens, il est probable que d'autres acteurs s'emparent de ce marché des shells intélligents d'ici les prochaines années.