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.