Personnaliser Bash tient dans un fichier : ~/.bashrc. C'est là que vous
posez vos alias, votre prompt PS1, vos fonctions et vos variables
d'environnement, relus à chaque terminal. Bash est le shell par défaut de
Debian, d'Ubuntu et de RHEL ; macOS, lui, est passé à Zsh en 2019. Cette page
montre les réglages utiles à la main, puis deux outils qui vont plus loin :
bash-it pour les thèmes et plugins, fzf pour chercher dans l'historique.
Les comportements décrits ont été vérifiés sur Debian 13, Ubuntu 24.04 et
AlmaLinux 10.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Configurer
.bashrcpour personnaliser prompt, alias et fonctions - Personnaliser le prompt PS1 pour afficher les informations utiles
- Installer et utiliser bash-it pour gérer thèmes et plugins
- Intégrer fzf pour une recherche floue ultra-rapide dans l'historique et les fichiers
Historique de Bash
Section intitulée « Historique de Bash »Bash, acronyme de « Bourne Again Shell », a été publié en 1989 par Brian Fox pour le projet GNU. Il succède au sh de Stephen Bourne, dont il reprend la syntaxe pour rester compatible avec les scripts existants, en y ajoutant l'historique, la complétion et de nombreuses extensions.
Son inclusion dans le projet GNU en a fait le shell naturel des distributions Linux, et il a longtemps été celui de macOS, jusqu'à ce qu'Apple le remplace par Zsh en 2019. Face à Zsh, Ksh ou Tcsh, Bash se distingue par un équilibre entre simplicité et fonctionnalités, et surtout par sa présence garantie sur les serveurs : c'est le shell que vos scripts d'administration peuvent supposer disponible.
Installer Bash et configurer le shell sous Linux
Section intitulée « Installer Bash et configurer le shell sous Linux »Bash est préinstallé sur les trois distributions de référence : il n'y
a rien à installer. Sa version se lit avec bash --version, utile pour
savoir si une fonctionnalité récente est disponible. Mesuré : 5.2.37 sur
Debian 13, 5.2.21 sur Ubuntu 24.04, 5.2.26 sur AlmaLinux 10.
bash --versionComment définir Bash comme shell par défaut sur Linux
Section intitulée « Comment définir Bash comme shell par défaut sur Linux »Votre shell de connexion est enregistré dans /etc/passwd, et chsh -s
le modifie pour votre compte. La commande vous demande votre mot de passe,
et n'accepte pour un utilisateur ordinaire que les shells listés dans
/etc/shells.
chsh -s "$(command -v bash)"chsh est fourni par le paquet passwd sur Debian et Ubuntu, par
util-linux sur AlmaLinux 10. Le changement vaut pour les prochaines
connexions : vérifiez-le avec getent passwd "$USER", dont la ligne doit se
terminer par le chemin de Bash.
Personnaliser Bash : astuces pour le fichier .bashrc
Section intitulée « Personnaliser Bash : astuces pour le fichier .bashrc »Le fichier ~/.bashrc est lu par chaque shell interactif qui n'est pas un
shell de connexion, c'est-à-dire par chaque terminal que vous ouvrez dans une
session graphique. Les shells de connexion (SSH, console) lisent d'abord un
autre fichier, mais les distributions leur font charger .bashrc à leur tour :
~/.profile le fait sur Debian et Ubuntu, ~/.bash_profile sur RHEL et
ses dérivées (vérifié dans /etc/skel).
Situé dans votre répertoire personnel, .bashrc ne concerne que votre
compte. On y définit des variables d'environnement, des alias, des fonctions
et le prompt ; chacun fait l'objet d'une section ci-dessous.
Ajouter des alias pour simplifier les commandes
Section intitulée « Ajouter des alias pour simplifier les commandes »Les alias sont des raccourcis pour les commandes que vous tapez souvent.
Ils se déclarent dans .bashrc, un par ligne, avec des guillemets simples
autour de la commande :
# Alias pour afficher les fichiers cachés en mode détailléalias ll='ls -la'
# Alias pour naviguer rapidementalias ..='cd ..'alias ...='cd ../..'
# Alias pour des commandes complexes (Debian et Ubuntu)alias update='sudo apt update && sudo apt upgrade -y'Un alias ajouté au fichier n'existe pas encore dans le terminal ouvert :
rechargez .bashrc pour l'appliquer, ou ouvrez un nouveau terminal. Le
fonctionnement d'apt utilisé ici est détaillé dans le guide
apt.
source ~/.bashrcPersonnaliser le prompt Bash
Section intitulée « Personnaliser le prompt Bash »Le prompt est la ligne affichée avant chaque commande. Il se règle avec la
variable PS1, dont chaque séquence à antislash est remplacée à
l'affichage :
# Prompt affichant l'utilisateur, l'hôte et le répertoire courantexport PS1='\u@\h:\w\$ 'Dans cet exemple, trois séquences suffisent à situer la session :
\ureprésente le nom d'utilisateur.\hreprésente le nom de l'hôte.\wreprésente le répertoire de travail courant.
Pour ajouter des couleurs, on insère des codes ANSI, encadrés de \[ et
\] : ces marqueurs indiquent à Bash que les caractères ne prennent pas de
place à l'écran, sans quoi les longues commandes se replient mal.
export PS1='\[\e[32m\]\u@\h:\[\e[34m\]\w\[\e[0m\]\$ 'Ce prompt colore l'utilisateur et l'hôte en vert (32), le répertoire en
bleu (34), puis revient à la couleur par défaut avec \e[0m.
Ajouter des fonctions personnalisées
Section intitulée « Ajouter des fonctions personnalisées »Les fonctions regroupent plusieurs commandes sous un nom, et acceptent des arguments là où un alias ne le peut pas. Par exemple, une fonction qui vide un répertoire temporaire :
clean_temp() { rm -rf ~/temp/* echo "Dossier temporaire nettoyé."}Ajoutez-la à votre .bashrc, puis rechargez-le avec source ~/.bashrc pour
l'utiliser. Les fonctions sont détaillées dans
Fonctions Bash,
avec leurs pièges de portée.
Modifier des variables d'environnement
Section intitulée « Modifier des variables d'environnement ».bashrc sert aussi à définir des variables d'environnement, transmises aux
programmes que vous lancez. Le cas le plus courant est l'ajout d'un
répertoire au PATH :
# Ajouter des répertoires au PATHexport PATH=$PATH:/usr/local/bin:/opt/scriptsAttention à un effet de bord : chaque source ~/.bashrc rajoute ces
répertoires au PATH, qui s'allonge avec des doublons au fil des
rechargements. C'est sans conséquence grave, mais ouvrir un nouveau terminal
repart d'un PATH propre.
bash-it : framework pour personnaliser Bash facilement
Section intitulée « bash-it : framework pour personnaliser Bash facilement »Présentation
Section intitulée « Présentation »bash-it est un framework open source qui regroupe, pour Bash, des alias, des plugins, des thèmes de prompt et des complétions prêts à l'emploi. Il évite de tout configurer à la main, au prix d'un dépôt GitHub cloné dans votre répertoire personnel.
Il se compose de quatre familles de modules, activables une à une avec
bash-it enable :
- Alias : raccourcis prédéfinis pour simplifier les commandes courantes.
- Plugins : modules qui ajoutent des fonctionnalités spécifiques (ex. : support Git, Docker).
- Thèmes : personnalisation du prompt pour rendre le terminal plus informatif et esthétique.
- Complétions : améliorations de l'autocomplétion pour des commandes complexes.
Installation et configuration de bash-it
Section intitulée « Installation et configuration de bash-it »L'installation se fait en quatre étapes, sans droits root : cloner le
dépôt, lancer son script d'installation, l'activer dans .bashrc, puis
recharger.
-
Cloner le dépôt dans
~/.bash_it:Fenêtre de terminal git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it -
Lancer le script d'installation, qui propose de sauvegarder votre
.bashrcexistant avant de le modifier :Fenêtre de terminal ~/.bash_it/install.sh -
Activer bash-it à la main si vous avez refusé la modification automatique du
.bashrc, en y ajoutant cette ligne :Fenêtre de terminal source ~/.bash_it/bash_it.sh -
Recharger la configuration :
Fenêtre de terminal source ~/.bashrc
Configuration de bash-it
Section intitulée « Configuration de bash-it »bash-it livre de nombreux modules, désactivés par défaut pour la
plupart. La commande bash-it show liste un catalogue avec l'état de
chaque entrée, et bash-it enable active celle qui vous intéresse.
Activer et gérer les alias
Section intitulée « Activer et gérer les alias »Les jeux d'alias activés sont rangés dans ~/.bash_it/aliases/enabled.
bash-it show alias affiche le catalogue, avec [ ] pour un jeu inactif et
[x] pour un jeu actif :
bash-it show alias
Alias Enabled? Descriptionag [ ] the silver searcher (ag) aliasesansible [ ] ansible abbreviationsapt [ ] Apt and dpkg aliases for Ubuntu and Debian distros.atom [ ] Atom.io editor abbreviationsbash-it [ ] Aliases for the bash-it command (these aliases are automatically included with the "general" aliases)bolt [ ] puppet bolt aliasesbundler [ ] ruby bundler
bash-it enable alias ansibleLa dernière commande active le jeu d'alias ansible, qui abrège les
commandes Ansible courantes. Le même principe vaut pour tous les jeux listés.
Activer des plugins
Section intitulée « Activer des plugins »Les plugins ajoutent des fonctions et des comportements au terminal.
bash-it show plugins en liste le catalogue ; le plugin base, marqué
[x], est actif par défaut :
bash-it show plugins
Plugin Enabled? Descriptionalias-completion [ ]autojump [ ] Autojump configuration, see https://github.com/wting/autojump for more detailsaws [ ] AWS helper functionsbase [x] miscellaneous tools...
bash-it enable plugin dockerCette commande active le plugin Docker, qui fournit des fonctions d'aide et des complétions pour gérer vos conteneurs.
Activer des complétions
Section intitulée « Activer des complétions »Les complétions permettent à Bash de proposer les options et les arguments d'une commande quand vous appuyez sur Tab. Pour activer celle de SSH :
bash-it enable completion sshLa touche Tab complète alors les noms d'hôtes connus après ssh, ce qui
facilite la saisie de vos connexions.
Personnalisation des thèmes
Section intitulée « Personnalisation des thèmes »Un thème bash-it remplace votre PS1 par un prompt plus riche :
utilisateur, machine, répertoire courant, état Git, parfois l'heure ou le
code de retour. Les thèmes disponibles sont les sous-dossiers de
~/.bash_it/themes, chacun contenant le fichier .bash qui le définit.
ls ~/.bash_it/themes
90210 codeword font modern powerline-naked sexyagnoster cooperkid gallifrey modern-t powerline-plain simpleatomic cupcake githelpers.theme.bash modern-time powerturk sirupaxin demula gitline morris primer slickbakke dos hawaii50 n0qorg pro standardbarbuk doubletime inretio newin pure tonkabase.theme.bash doubletime_multiline iterate norbu purity tonotdobinaryanomaly doubletime_multiline_pyonly kitsune nwinkler radek tylenolbira dulcie lambda nwinkler_random_colors rainbowbrite wanelobobby duru liquidprompt oh-my-posh ramses zitronbobby-python easy luan p4helpers.theme.bash rana zorkbrainy elixr mairan parrot redlinebrunton emperor mbriggs pete rjorgensoncandy envy metal powerline robbyrussellclean essential minimal powerline-multiline roderikParmi les plus utilisés figurent powerline, bobby et pure. Le thème
se choisit avec la variable BASH_IT_THEME du .bashrc, par exemple pour
powerline :
export BASH_IT_THEME='powerline'Rechargez ensuite votre configuration pour que le nouveau thème remplace le prompt courant :
source ~/.bashrcAdapter le thème à vos besoins
Section intitulée « Adapter le thème à vos besoins »Chaque thème est un fichier .bash éditable dans ~/.bash_it/themes. Pour
y ajouter une information, on écrit une fonction et on l'injecte dans le
prompt. Exemple avec l'état de la batterie, lu par acpi quand il est
installé :
# Ajouter un segment d'état de la batteriebattery_status() { if command -v acpi &> /dev/null; then acpi -b | grep -o '[0-9]*%' | head -n 1 fi}export PS1='$(battery_status) '$PS1Le test command -v acpi évite une erreur sur les machines sans batterie
ou sans l'outil. Gardez vos modifications dans une copie du thème : une
mise à jour de bash-it par git pull écraserait le fichier d'origine.
Utilisation de fzf
Section intitulée « Utilisation de fzf »fzf est un filtre interactif en ligne de commande : il affiche une
liste et la réduit au fil de la frappe, sans exiger le nom exact. Intégré à
Bash, il remplace la recherche Ctrl+R dans l'historique par une liste
filtrable, et ajoute Ctrl+T pour insérer un chemin de fichier.
Installation de fzf
Section intitulée « Installation de fzf »fzf est empaqueté sur toutes les distributions de référence, mais pas dans
les mêmes dépôts ni dans la même version, et la version décide de la façon
de l'activer. Mesuré : 0.60 sur Debian 13, 0.44 sur Ubuntu 24.04, et
0.58 depuis EPEL sur AlmaLinux 10, où dnf install fzf échoue sans ce
dépôt.
-
Debian/Ubuntu :
Fenêtre de terminal sudo apt install fzf -
RHEL et dérivées (le paquet vient d'EPEL) :
Fenêtre de terminal sudo dnf install epel-releasesudo dnf install fzf -
macOS avec Homebrew :
Fenêtre de terminal brew install fzf
Activer le plugin fzf avec bash-it
Section intitulée « Activer le plugin fzf avec bash-it »Si vous utilisez bash-it, un plugin dédié charge fzf pour vous. Il suppose que fzf est déjà installé par le gestionnaire de paquets :
bash-it enable plugin fzfRechargez ensuite .bashrc : les raccourcis de fzf sont actifs sans
toucher au fichier vous-même.
Ajouter fzf dans le fichier .bashrc
Section intitulée « Ajouter fzf dans le fichier .bashrc »Sans bash-it, l'activation tient en quelques lignes du .bashrc, qui dépendent
de la version installée. Depuis fzf 0.48, la commande fzf --bash
produit elle-même le code des raccourcis et de la complétion : c'est le cas
de Debian 13 et d'AlmaLinux 10. Ubuntu 24.04, avec sa version 0.44, ne la
connaît pas : il faut y charger les fichiers fournis par le paquet.
# fzf 0.48 et plus (Debian 13, AlmaLinux 10 avec EPEL)eval "$(fzf --bash)"
# fzf plus ancien (Ubuntu 24.04) : fichiers livrés par le paquetsource /usr/share/doc/fzf/examples/key-bindings.bashsource /usr/share/bash-completion/completions/fzf
# Apparence : 40 % de hauteur, liste de haut en bas, cadreexport FZF_DEFAULT_OPTS="--height 40% --reverse --border"Ne gardez que le bloc qui correspond à votre système : fzf --version vous le
dit. La variable FZF_DEFAULT_OPTS, elle, vaut pour toutes les versions.
Recharger la configuration
Section intitulée « Recharger la configuration »Après avoir modifié votre fichier .bashrc, rechargez-le, puis testez
Ctrl+R : une liste filtrable de votre historique doit s'ouvrir au lieu
de la recherche classique.
source ~/.bashrcÉcrire des scripts Bash : automatisation et bonnes pratiques
Section intitulée « Écrire des scripts Bash : automatisation et bonnes pratiques »Un script Bash est un fichier qui enchaîne des commandes, pour automatiser
une tâche répétitive. Le module « Écrire des scripts Bash » de ce parcours le
traite en détail ; cette section n'en rappelle que les bases, pour situer ce
que votre .bashrc a en commun avec un script.
Un script commence par la ligne shebang, qui indique au système quel interpréteur doit l'exécuter :
#!/usr/bin/env bash
echo "Bonjour, ceci est un script Bash simple"Les arguments passés au script arrivent dans $1, $2, et ainsi de suite,
ce qui rend le script réutilisable avec des valeurs différentes :
#!/usr/bin/env bash
nom_utilisateur=$1echo "Bienvenue, $nom_utilisateur!"Les structures de contrôle if, for et while orientent l'exécution
selon l'état du système, par exemple l'existence d'un fichier :
#!/bin/bash
if [ -f "/etc/passwd" ]; then echo "Le fichier /etc/passwd existe."else echo "Le fichier /etc/passwd n'existe pas."fiPour l'exécuter directement, un script doit être rendu exécutable, puis lancé avec son chemin :
chmod +x mon_script.sh./mon_script.shPlus loin dans l'écriture de scripts Bash
Section intitulée « Plus loin dans l'écriture de scripts Bash »Deux leçons du module scripts prolongent ces bases. Elles sont placées avant celle-ci dans le parcours, et vous pouvez y revenir à tout moment :
- Écrire un script shell : les bases de l'écriture de scripts et la structure d'un script propre.
- Écrire des scripts robustes :
set -euo pipefail, validation des entrées,trapet fichiers temporaires sûrs.
Aller plus loin avec Bash : outils et personnalisation avancée
Section intitulée « Aller plus loin avec Bash : outils et personnalisation avancée »Deux outils reviennent régulièrement en complément du .bashrc quand la
personnalisation atteint ses limites. asdf
est un gestionnaire de versions qui installe côte à côte plusieurs versions d'un
même langage ou d'un même outil, et bascule de l'une à l'autre selon le projet.
direnv charge et décharge automatiquement des variables d'environnement
en fonction du répertoire courant, ce qui évite l'export oublié quand on change
de projet.
Combinés à bash-it, ces outils produisent un environnement de travail très proche, en confort, de ce qu'offre nativement Zsh, sans changer de shell ni réapprendre une syntaxe.
Dépannage
Section intitulée « Dépannage »Presque tous les problèmes de personnalisation viennent d'un fichier non rechargé ou d'une ligne qui ne correspond pas à votre version d'outil. Le réflexe : ouvrir un nouveau terminal, qui relit tout depuis zéro.
| Symptôme | Cause probable | Solution |
|---|---|---|
Les modifications du .bashrc ne s'appliquent pas | Le fichier n'a pas été rechargé après modification | Lancer source ~/.bashrc ou ouvrir un nouveau terminal |
| Le prompt affiche des caractères bizarres, les longues lignes se replient mal | Codes couleur de PS1 non encadrés | Encadrer chaque code couleur avec \[ et \] |
bash-it ne charge pas les plugins | Les plugins ne sont pas activés | Lancer bash-it enable plugin <nom> puis source ~/.bashrc |
unknown option: --bash au démarrage du terminal | fzf antérieur à 0.48 (Ubuntu 24.04) | Charger /usr/share/doc/fzf/examples/key-bindings.bash à la place |
Ctrl+R reste la recherche classique | Raccourcis fzf non chargés | Ajouter eval "$(fzf --bash)" ou le fichier key-bindings.bash au .bashrc |
dnf install fzf ne trouve pas le paquet | fzf vient d'EPEL sur RHEL et ses dérivées | sudo dnf install epel-release, puis relancer |
À retenir
Section intitulée « À retenir »- Le fichier
~/.bashrcest le point central de personnalisation de Bash, relu par chaque terminal interactif, y compris les sessions de connexion via~/.profileou~/.bash_profile. - Les alias et fonctions dans
.bashrcautomatisent les commandes répétitives. - Le prompt PS1 peut afficher utilisateur, hôte et répertoire ; ses codes couleur s'encadrent de
\[et\]. - bash-it fournit un framework complet de thèmes et plugins prêt à l'emploi.
- fzf améliore considérablement la recherche dans l'historique ; sa version décide de la façon de l'activer.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.
Points faibles
Aucun sujet sous le seuil de réussite.
À faire ensuite
Des indices pour retenter votre chance ?
Continuer le cours : Découvrir Zsh
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications