En ajustant finement le comportement de votre shell Bash grâce à la commande `shopt`, vous avez la possibilité de contrôler plus de cinquante paramètres distincts. Nous allons vous présenter comment personnaliser votre environnement Linux selon vos préférences.
L’utilitaire intégré `shopt`
L’outil intégré `shopt` est inclus dans toutes les versions du shell Bash, ce qui élimine la nécessité d’une installation supplémentaire. Le nombre d’options disponibles au sein de `shopt` a augmenté progressivement au fil des années. Par conséquent, plus la version de Bash est ancienne, plus la liste d’options `shopt` sera restreinte.
Si une fonctionnalité semble ne pas fonctionner correctement sur votre système, consultez la page de manuel de Bash afin de vérifier que l’option en question est bien présente dans votre version de `shopt`.
Nous allons aborder toutes les options de `shopt` dans ce qui suit, en détaillant leur utilisation et en fournissant des exemples. Vous pourrez ensuite vous référer à la page de manuel de Bash ou au Manuel de référence GNU Bash pour évaluer l’utilité ou l’attrait de ces options.
Certaines options de `shopt` sont activées par défaut, faisant partie intégrante du comportement standard de Bash. Vous avez la possibilité d’activer une option `shopt` de manière temporaire dans Bash. Celle-ci reviendra à son état initial lorsque vous fermerez le shell.
Cependant, si vous désirez que les modifications soient disponibles à chaque lancement d’un shell Bash, il est possible de rendre ces modifications permanentes.
Les Paramètres de `shopt`
Il existe un total de 53 options `shopt`. Si vous exécutez la commande `shopt` sans spécifier d’options, la liste complète s’affichera. En redirigeant la sortie vers la commande `wc`, celle-ci peut compter les lignes, les mots et les caractères pour nous. Étant donné que chaque option `shopt` est présentée sur une ligne distincte, le nombre de lignes correspond au nombre d’options.
Pour obtenir ce décompte, saisissez la commande suivante :
shopt | wc
Pour visualiser l’ensemble des options de manière plus ordonnée, vous pouvez rediriger la sortie vers la commande `column` afin de les afficher en colonnes, ou bien les afficher de manière plus concise.
Voici la commande à saisir :
shopt | column
Localisation de `shopt` dans le manuel Linux
La section consacrée à `shopt` et à ses différentes options se trouve au sein de la section Bash du manuel Linux. Cette section de Bash est assez vaste, comprenant plus de 6000 lignes. Vous pouvez retrouver la description de `shopt` en parcourant le manuel, ou bien vous pouvez effectuer une recherche directe.
Pour ce faire, ouvrez le manuel à la section Bash :
man bash
Dans le manuel, appuyez sur la touche / afin de lancer une recherche. Tapez la chaîne de caractères suivante, puis appuyez sur la touche Entrée :
assoc_expand_once
Le début de la section décrivant les options de `shopt` s’affichera alors dans la fenêtre du manuel.
Activation et désactivation des options
Pour activer ou désactiver les options `shopt`, les commandes suivantes sont utilisées :
-s : permet de définir ou d’activer une option.
-u : permet d’annuler la définition ou de désactiver une option.
Étant donné que certaines options sont activées par défaut, il peut être utile de vérifier quelles options sont actuellement activées ou désactivées. Pour ce faire, il est possible d’utiliser les options -s et -u sans spécifier le nom d’une option. Cela permet à `shopt` de lister les options activées ou désactivées.
Saisissez les commandes suivantes :
shopt -s
shopt -u | column
Vous pouvez également vérifier l’état d’une option en utilisant son nom sans les options -s ou -u.
Par exemple, pour vérifier l’état de l’option `histverify`, saisissez la commande suivante :
shopt histverify
Pour l’activer, tapez :
shopt -s histverify
Puis, pour revérifier son état :
shopt histverify
L’option `histverify` modifie le comportement de la commande d’historique. Habituellement, si vous demandez à l’historique de répéter une commande en la référençant par un numéro, comme `!245`, la commande est extraite de l’historique et exécutée immédiatement.
Si vous préférez examiner une commande afin de vous assurer que c’est bien celle que vous attendiez et la modifier si nécessaire, activez l’option `histverify` :
!245
La commande sera alors affichée sur la ligne de commande, vous permettant de la modifier ou de l’exécuter en validant par la touche Entrée.
L’option `autocd`
Lorsque l’option `autocd` est activée, si vous saisissez le nom d’un répertoire sur la ligne de commande et appuyez sur la touche Entrée, le comportement sera identique à l’exécution de la commande `cd` suivie du nom du répertoire.
Pour activer l’option `autocd`, tapez la commande suivante :
shopt -s autocd
Puis, saisissez le nom d’un répertoire :
Documents
L’option `cdspell`
Quand l’option `cdspell` est activée, Bash corrige automatiquement les erreurs d’orthographe simples ou les fautes de frappe dans les noms de répertoire.
Pour définir l’option `cdspell`, saisissez :
shopt -s cdspell
Pour tenter de changer de répertoire en utilisant un nom en minuscules qui devrait avoir une majuscule initiale, tapez :
cd documents
Puis, pour essayer un nom de répertoire contenant un ‘t’ supplémentaire, tapez :
cd ../Picttures
Bash change de répertoire à chaque fois, indépendamment des erreurs d’orthographe.
L’option `xpg_echo`
Lorsque l’option `xpg_echo` est activée, la commande `echo` interprète les caractères d’échappement tels que `\n` pour un retour à la ligne et `\t` pour une tabulation horizontale.
Assurez-vous d’abord que l’option est activée :
shopt -s xpg_echo
Ensuite, insérez `\n` dans une chaîne de caractères à transmettre à `echo` :
echo "This is line onenThis is line two"
Le caractère d’échappement de retour à la ligne force un saut de ligne dans la sortie.
Cela donne le même comportement que l’option `-e` ( activer l’interprétation des caractères d’échappement) de `echo`, mais l’option `xpg_echo` lui permet de devenir le comportement par défaut.
L’option `dotglob`
L’option `dotglob` requiert une certaine prudence lors de son utilisation. Elle permet aux fichiers et répertoires qui commencent par un point (`.`) d’être inclus lors des expansions de nom (globbing). Ces fichiers sont appelés « fichiers points » ou « répertoires points » et sont généralement masqués. L’option `dotglob` ignore le point au début de leur nom.
Dans un premier temps, recherchez les fichiers ou répertoires qui se terminent par « geek » :
ls *geek
Un fichier est trouvé et affiché. Ensuite, activez l’option `dotglob` :
shopt -s dotglob
Exécutez de nouveau la commande `ls` pour rechercher les fichiers et répertoires se terminant par « geek » :
ls *geek
Cette fois, deux fichiers sont trouvés et affichés, dont un « fichier point ». Il est important d’être vigilant lors de l’utilisation des commandes `rm` et `mv` quand l’option `dotglob` est activée.
L’option `nocaseglob`
L’option `nocaseglob` est similaire à l’option `dotglob`, à la différence que `nocaseglob` ignore les différences entre majuscules et minuscules lors des expansions de nom de fichiers et de répertoires.
Pour rechercher les fichiers ou répertoires commençant par « how » :
ls how*
Un fichier est trouvé et affiché. Activez ensuite l’option `nocaseglob` :
shopt -s nocaseglob
Puis, exécutez de nouveau la commande `ls` :
ls how*
Deux fichiers sont trouvés, dont un contenant des majuscules dans son nom.
Rendre les modifications permanentes
Les modifications que nous avons effectuées ne seront valables que jusqu’à la fermeture du shell Bash actuel. Pour qu’elles soient permanentes d’une session shell à l’autre, il est nécessaire de les ajouter au fichier « .bashrc ».
Depuis votre répertoire personnel, exécutez la commande suivante pour ouvrir le fichier « .bashrc » dans l’éditeur de texte graphique Gedit (ou utilisez l’éditeur de votre choix) :
gedit .bashrc
L’éditeur Gedit s’ouvrira avec le fichier « .bashrc » chargé. Vous constaterez que certaines entrées `shopt` y sont déjà présentes.
Vous pouvez également ajouter vos propres options `shopt` dans ce fichier. Après avoir effectué les modifications, sauvegardez le fichier et fermez l’éditeur. Désormais, à chaque ouverture d’un nouveau shell Bash, vos options seront appliquées.
Une multitude d’options
Il est vrai que la commande `shopt` offre un grand nombre d’options, mais il n’est pas nécessaire de toutes les appréhender en même temps, voire de les utiliser un jour. Étant donné leur nombre, il est probable que certaines ne vous seront jamais utiles.
Par exemple, certaines options ont pour but de rendre Bash compatible avec d’anciennes versions. Bien que cela puisse avoir une utilité spécifique pour certains, il s’agit d’un cas d’usage plutôt particulier.
Vous pouvez consulter la page de manuel de Bash ou le Manuel de référence GNU Bash. Identifiez les options qui pourraient faire une différence pour vous, puis expérimentez avec celles-ci. Soyez particulièrement vigilant avec les options qui affectent la manière dont les noms de fichiers et répertoires sont développés. Testez ces options à l’aide de commandes inoffensives, comme `ls`, jusqu’à ce que vous soyez familiarisé avec leur fonctionnement.