Configurer et personnaliser Bash avec Oh-My-Bash
Personnaliser Bash

Configurer et personnaliser Bash avec Oh-My-Bash

Si comme moi vous êtes un utilisateur de Bash, que vous y passez de nombreuses heures, vous aurez sans doute déjà senti le besoin de le personnaliser et de l’agrémenter de fonctionnalités. Et même si tout est faisable sans aide particulière, il faut bien avouer que la tâche peut se révéler fastidieuse.

Dans cet article nous verrons comment configurer et personnaliser Bash avec Oh-My-Bash, un framework communautaire de gestion de la configuration de Bash. Si vous avez déjà entendu parler de Oh-My-Zsh!, Oh-My-Bash est un dérivé de ce dernier mais adapté à Bash (Bourne Again SHell). Nous allons donc explorer cet outil qu’est Oh-My-Bash de son installation à sa personnalisation.

Installer Oh-My-Bash

Oh-My-Bash est un outil indépendant de la plateforme/distribution que vous utilisez. Le seul prérequis est d’utiliser Bash comme shell, ce qui est le cas par défaut sur l’écrasante majorité des distributions Linux de nos jours. Par conséquent, l’installation de Oh-My-Bash est strictement identique quelque soit le système que vous utilisez.

Prérequis

  • Utiliser Bash comme shell
  • Disposer de git
  • Disposer de curl ou wget

Pour vérifier la disponibilité de ces utilitaires, utilisez la commande which.

Si vous avez besoin d’installer git, wget ou curl, référez-vous aux articles relatifs à dnf, apt, et pacman en fonction de votre distribution pour la procédure d’installation du package correspondant.

Installer à l’aide de « curl »

Si vous disposez de l’utilitaire curl vous pouvez utiliser la méthode ci-dessous:

Installer Oh-My-Bash à l’aide de curl
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"

Installer à l’aide de « wget »

Si vous préférez utiliser l’utilitaire wget, voici comment procéder:

Installer Oh-My-Bash à l’aide de wget
bash -c "$(wget https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh -O -)"

Après l’installation

Une fois l’installation terminée un shell Bash est lancé…

Oh-My-Bash est installé

Notez que c’est une instance de Bash lancée depuis le shell dans lequel nous avons lancé l’installation. En entrant exit, nous retournons au shell précédent.

Recharger le configuration de Bash

Si à tout moment nous avons besoin de recharger la configurations de Bash, que ce soit parce que nous avons personnalisé quelque chose ou modifié un paramètre nous devons réinterpréter le fichier ~/.bashrc, c’est toujours plus simple et plus rapide que de fermer la session et d’en ouvrir une nouvelle.

Lancer l’interprétation de .bashrc
source ~/.bashrc

Désinstaller Oh-My-Bash

Dans le cas ou nous voudrions désinstaller Oh-My-Bash il suffit d’invoquer la commande suivante:

Désinstaller Oh-My-Bash
uninstall_oh_my_bash

Ce que Oh-My-Bash apporte de base

Outre l’apparence la personnalisation du prompt, Oh-My-Bash apporte de base une série de petites améliorations de l’environnement:

  • Une collection d’alias (la liste des alias disponibles s’obtient avec la commande alias).
  • Des plugins ajoutant de nouvelles fonctionnalités.
  • Des fonctionnalités d’autocomplétions pour git, ssh etc.
  • L’intégration des états de dépôts git sans le prompt.
  • Une gestion de thèmes d’affichage.
  • etc.

Personnaliser Oh-My-Bash

Point important, nous pouvons paramétrer Oh-My-Bash pour qu’il configure Bash pour nous. Pour ce faire il nous suffit d’éditer notre fichier ~/.bashrc.

N’oubliez pas de recharger .bashrc après chaque modification en lançant source ~/.bashrc.

Changer le thème de Bash

Oh-My-Bash est fourni avec quelques dizaines de thèmes qui gèrent l’apparence du prompt et des couleurs de notre Bash. Par défaut le thème utilisé est font. Mais nous pouvons choisir celui qui nous convient le mieux.

La liste des thèmes disponible est accessible à cette adresse: https://github.com/ohmybash/oh-my-bash/wiki/Themes

Pour choisir le thème qui nous plait, il suffit de modifier la ligne suivante dans .bashrc:

Thème de Bash dans ~/.bashrc
OSH_THEME="font"

Notez que plusieurs thèmes requièrent des jeux de polices d’écriture spécifiques de type « powerline », ces polices doivent donc être installées le cas échéant sans quoi l’affichage des caractères spéciaux du prompt et de l’environnement sera erroné.

Notez également que si vous voulez que Bash s’affiche correctement à travers une connexion ssh avec ces mêmes polices, vous devrez les installer sur la machine depuis laquelle vous vous connectez et utiliser une police compatible dans votre terminal.

Installer les polices de caractères « powerline »

Installation des polices « powerline » sous Ubuntu 22.04 / Debian 12

Ubuntu 22.04 et Debian 12
sudo apt install fonts-powerline

Installation des polices « powerline » sous Arch Linux

Arch Linux
sudo pacman -S powerline-fonts

Installation des polices « powerline » sous Rocky Linux, Red Hat, Fedora, …

Si vous utilisez déjà les dépôts EPEL vous pouvez ignorer la première ligne.

Rocky Linux, Red Hat, Fedora, …
sudo dnf install epel-release
sudo dnf install powerline-fonts

Installation des polices « powerline » depuis le dépôt.

Si votre distribution ne dispose pas d’un package spécifique, vous pouvez utiliser la méthode suivante:

Méthode générique
# Aller dans sont répertoire personnel
cd ~
# Créer un répertoire pour les sources
mkdir sources
# Aller dans le répertoire sources
cd sources
# Cloner le dépôt
git clone https://github.com/powerline/fonts.git --depth=1
# Entrer dans le dossier du dépôt local
cd fonts
# Lancer l'installation des polices
./install.sh
# Supprimer le dépôt local

cd ..
rm -rf fonts

Activer les plugins

La liste des plugins activable est disponible à cette adresse: https://github.com/ohmybash/oh-my-bash/tree/master/plugins.

Pour activer les plugins que nous voulons utiliser, nous devons de nouveau intervenir dans le fichier .bashrc.

Activer les plugins dans .bashrc
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-bash/plugins/*)
# Custom plugins may be added to ~/.oh-my-bash/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
  git
  bashmarks
  sudo
)

J’ai ici par exemple ajouté le plugin « sudo » qui permet de relancer la commande précédente via sudo en appuyant deux fois de suite sur « ESC ».

Activer les jeux d’alias

Comme pour les plugins, Oh-My-Bash fourni une série de packages d’alias que nous pouvons charger avec le reste. Par défait seul le package d’alias « general » est activé.

La liste des packages d’alias se trouve sur cette page: https://github.com/ohmybash/oh-my-bash/tree/master/aliases.

Pour en activer il faut à nouveau passer par .bashrc.

Activer les packages d’alias dans ~/.bashrc
# Which aliases would you like to load? (aliases can be found in ~/.oh-my-bash/aliases/*)
# Custom aliases may be added to ~/.oh-my-bash/custom/aliases/
# Example format: aliases=(vagrant composer git-avh)
# Add wisely, as too many aliases slow down shell startup.
aliases=(
  general
)

Activer les modules de complétion

Oh-my-bash fourni également des outils d’aides à la complétion sous forme de modules. La liste des modules de complétion disponibles se trouve sur cette page: https://github.com/ohmybash/oh-my-bash/tree/master/completions.

Nous pouvons charger des modules de complétion en ajoutant leur nom dans le fichier .bashrc, comme pour les autres fonctionnalités.

Activer les modules de complétion dans ~/.bashrc
# Which completions would you like to load? (completions can be found in ~/.oh-my-bash/completions/*)
# Custom completions may be added to ~/.oh-my-bash/custom/completions/
# Example format: completions=(ssh git bundler gem pip pip3)
# Add wisely, as too many completions slow down shell startup.
completions=(
  git
  composer
  ssh
)

Mettre les mains dans le cambouis

Si comme moi vous avez envie d’aller un peu plus loin et par exemple modifier un thème existant, ajouter des listes d’alias ou encore développer un module de complétion, il y a une chose principale à savoir: tout ce que vous ajoutez ne doit pas interférer avec les fichiers originaux de Oh-My-Bash sous peine de tout perdre en cas de mise à jour.

Pour ce faire, il y a un dossier prévu pour y incorporer nos ajouts: ~/.oh-my-bash/custom/.

  • Ajoutez vos propres thèmes dans ~/oh-my-bash/custom/themes/
  • Ajoutez vos alias dans ~/oh-my-bash/custom/aliases/
  • Ajoutez vos modules de completion dans ~/oh-my-bash/custom/completions/

Par exemple, personnellement le thème par défaut, font, me convient très bien sauf que je préfèrerais ne pas avoir l’heure indiquée en début de prompt. Plutôt que de modifier le thème en lui même, je vais simplement en créer nouveau sur base de celui qui est fourni.

Modification d’un thème existant

Voici comment je procède pour créer un thème personnalisé que je nommerai « justsudoit » sur base de « font » qui est fourni.

Création d’un thème sur base d’un existant
# Copie du thème sous unautre nom dans ~/.oh-my-bash/custom/themes/
cp -r ~/.oh-my-bash/themes/font ~/.oh-my-bash/custom/themes/justsudoit

# Renommer le fichier du thème pour qu'il corresponde au nom du dossier
mv ~/.oh-my-bash/custom/themes/justsudoit/{font.theme.sh,justsudoit.theme.sh}

A partir de là je peux modifier le contenu du fichier justsudoit.theme.sh. Je ne vais ici que modifier la ligne qui génère le prompt et en supprimer l’affichage de l’heure.

Prompt d’origine du thème font
PS1="$(clock_prompt)$python_venv${hostname} ${_omb_prompt_bold_teal}\W $(scm_prompt_char_info)${ret_status}→ ${_omb_prompt_normal}"
Prompt sans l’heure
PS1="$python_venv${hostname} ${_omb_prompt_bold_teal}\W $(scm_prompt_char_info)${ret_status}→ ${_omb_prompt_normal}"

Il ne me reste plus qu’à définir le thème dans .bashrc et le recharger.

Choix du thème dans ~/.bashrc
OSH_THEME="justsudoit"
Recharger .bashrc
source ~/.bashrc

Et voici le résultat:

Theme Bash customisé

Conclusion

Avec un minimum de travail nous pouvons nous créer un environnement Bash plus agréable et qui correspond à nos besoins. Outre l’aspect cosmétique, Oh-My-Bash apporte une foule de fonctionnalités qui améliorent notre productivité, pour peu que nous nous donnions la peine de les découvrir.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.