Linux / Commande unalias : retirer un alias et éviter son retour
unalias nom retire un alias du Bash courant ; unalias -a les retire tous dans ce shell. Pour qu’un alias ne revienne pas dans une nouvelle session, il faut aussi supprimer ou neutraliser sa définition dans le fichier de démarrage qui le recrée : unalias ne modifie pas ce fichier.
Inspecter puis retirer un alias précis
Un alias associe un nom à un texte substitué lors de la lecture d’une commande. Le guide de création et de conservation des alias Bash explique ce mécanisme. Avant de retirer un raccourci, vérifiez que vous avez bien identifié un alias et sa définition :
alias jb_ll
type -a jb_ll
Si jb_ll existe et que vous voulez le retirer de la session :
unalias jb_ll
Vérifiez ensuite avec alias jb_ll et type -a jb_ll. Une absence d’alias produit normalement un diagnostic et un statut non nul pour la première vérification. La seconde peut encore trouver une fonction ou un fichier de ce nom : la suppression d’un alias ne supprime pas les autres candidats.
Les formes principales sont :
unalias nom [nom ...]
unalias -a
Cette page concerne Bash. La référence officielle des commandes internes Bash décrit unalias et son statut de retour ; un autre shell peut avoir des particularités différentes.
Comprendre ce qui reste après la suppression
L’exercice complet suivant crée un alias et une fonction de même nom dans un sous-shell, puis retire seulement l’alias. Il n’altère pas les définitions de votre session parente :
(
shopt -s expand_aliases
function jb_demo {
builtin printf '%s\n' 'Fonction toujours présente'
}
alias jb_demo='printf "%s\n" "Alias"'
type -t jb_demo
unalias jb_demo
type -t jb_demo
)
Les catégories attendues sont :
alias
function
Après unalias, la fonction existe toujours. Le corps de cette fonction n’est pas appelé par type : l’exercice observe la résolution sans exécuter le nom recherché. Pour examiner les candidats d’une commande réelle, utilisez le guide de type et de ses options.
| Objet | Commande correspondante dans Bash | Vérification |
|---|---|---|
| Alias | unalias nom |
alias nom et type nom. |
| Fonction | unset -f nom |
declare -F nom et type nom. |
| Variable | unset -v nom, si elle peut être retirée. |
declare -p nom. |
| Fichier exécutable | Pas de suppression par unalias. |
Recherche des chemins avec type, sans modifier le fichier. |
Retirez uniquement l’objet identifié. Une variable en lecture seule peut notamment refuser une suppression. Effacer un fichier ou une fonction pour corriger un simple alias serait une modification différente du besoin initial.
Retirer plusieurs alias ou les examiner sans aucun alias
Une erreur ne signifie pas qu’aucune suppression n’a eu lieu
unalias jb_ll jb_gs jb_dfh
Bash essaie de retirer les noms fournis. Si l’un d’eux n’est pas un alias existant, la commande renvoie un échec, alors que d’autres alias de la liste peuvent avoir été retirés. Cette opération n’est pas une transaction annulant tous les changements au premier nom absent. Vérifiez les noms concernés si vous avez besoin d’un état précis.
Pour retirer un nom uniquement lorsqu’il est défini, ce bloc complet peut être utilisé dans un réglage Bash :
if builtin alias jb_ll >/dev/null 2>&1; then
builtin unalias jb_ll
fi
builtin impose ici les commandes internes plutôt que des fonctions de même nom. Le contrôle n’analyse pas un message traduit. Un script non interactif ne développe normalement pas les alias, mais peut tout de même contenir ou consulter leur table ; son état n’est pas automatiquement celui du terminal parent.
Limiter un essai global à un sous-shell
unalias -a retire toutes les définitions de la table du shell qui l’exécute. Pour observer la résolution de ls sans conserver cette suppression dans votre session :
(
unalias -a
type -a ls
)
À la fin des parenthèses, la table du shell parent reste disponible. Cet exemple inspecte un nom ; des commandes déjà lues dans un bloc peuvent avoir subi l’expansion de leurs alias avant son exécution. La documentation des alias Bash explique cette distinction entre lecture et exécution.
Si vous comptez réellement retirer tous les alias du shell courant, conservez d’abord les définitions que vous souhaitez pouvoir remettre. Ce bloc crée un nouveau fichier de sauvegarde avec des permissions limitées, sans écraser un fichier existant :
(
umask 077
set -o noclobber
builtin alias -p > alias-sauvegarde.bash
)
Vérifiez que le bloc a réussi et examinez le contenu avant une suppression globale. Si le fichier existe déjà, choisissez un autre nom ; si une erreur d’écriture survient, ne considérez pas un fichier partiel comme une sauvegarde valide. Le sous-shell copie ici la table à exporter ; il ne retire aucun alias.
Une sauvegarde que vous avez créée et vérifiée peut ensuite réintroduire les définitions enregistrées :
source ./alias-sauvegarde.bash
Cette lecture exécute le contenu du fichier comme du code Bash. Elle remet les définitions sauvegardées et peut remplacer des alias de même nom, mais ne supprime pas ceux ajoutés depuis : ce n’est pas nécessairement une restauration exacte de toute la table. Il n’existe pas de commande générale annulant un unalias -a lorsque les définitions n’ont été conservées nulle part.
Empêcher l’alias de revenir dans un nouveau terminal
Une suppression en mémoire n’agit pas sur les autres shells déjà ouverts. Une nouvelle session peut recréer l’alias à partir de ses fichiers de démarrage. Commencez par rechercher son nom dans les fichiers personnels habituels, en adaptant jb_ll à votre cas :
for alias_config in "$HOME/.bashrc" "$HOME/.bash_aliases" \
"$HOME/.bash_profile" "$HOME/.bash_login" "$HOME/.profile"; do
if [ -f "$alias_config" ]; then
grep -nH -F -- 'jb_ll' "$alias_config"
fi
done
Cette recherche indique des lignes candidates, pas une preuve exhaustive de l’origine. La définition peut être répartie, générée ou chargée depuis un autre fichier. Suivez les lectures avec source ou . présentes dans votre configuration ; une définition plus tardive peut remplacer une définition précédente.
Pour un Bash interactif ordinaire non lancé comme shell de connexion, le point d’entrée est généralement ~/.bashrc. Un shell de connexion suit la chaîne des profils personnels, et ~/.bash_aliases n’est lu que si une configuration le charge. Les règles des fichiers de démarrage Bash permettent d’identifier la chaîne effectivement utilisée.
- Gardez la session actuelle ouverte et sauvegardez le fichier à modifier. Avec GNU cp,
cp --backup=numbered -- ~/.bashrc ~/.bashrc.before-unaliasconvient pour un~/.bashrcexistant ; adaptez les chemins si la définition est ailleurs. - Dans votre éditeur, supprimez ou commentez uniquement la définition concernée. Préservez les autres alias, conditions et réglages.
- Pour le fichier modifié, vérifiez la syntaxe avec
bash -n ~/.bashrc, en adaptant le chemin. Corrigez les diagnostics avant d’ouvrir une nouvelle session. - Retirez aussi l’alias de la session actuelle avec
unalias jb_ll, puis ouvrez une nouvelle session et contrôlez séparément son état avecalias jb_llettype -a jb_ll.
Relire un fichier dont la définition a été supprimée ne retire pas un alias déjà en mémoire. source ~/.bashrc ne remplace donc pas automatiquement le retrait explicite de la session actuelle et exécuterait aussi toutes les autres commandes du fichier.
Si une configuration système recrée l’alias et que vous voulez seulement ajuster votre compte, le bloc conditionnel présenté plus haut peut retirer ce nom dans votre fichier personnel, après le chargement de ses définitions. Vérifiez cet ordre plutôt que modifier un fichier partagé comme /etc/bashrc, /etc/bash.bashrc ou un script de /etc/profile.d pour tous les utilisateurs.
Pour revenir sur votre modification, rétablissez la définition concernée depuis la sauvegarde et vérifiez une nouvelle session. Une restauration complète du fichier doit tenir compte des autres changements qui auraient été faits depuis.
Contourner une seule invocation et diagnostiquer les écarts
Si vous voulez simplement éviter un alias pour une commande, il n’est pas nécessaire de supprimer sa définition. Dans Bash, \ls empêche l’expansion de l’alias de ce mot, mais n’écarte pas une fonction ls. Dans une écriture ordinaire, command ls omet aussi la recherche de fonction ; le guide de command et du contournement des fonctions précise les limites liées au contexte d’analyse.
Un chemin explicite vers un fichier choisi évite la recherche par nom, à condition que ce chemin ait été vérifié sur votre système. Ne supposez pas qu’un chemin copié d’une autre distribution est le bon.
| Observation | Vérification utile |
|---|---|
unalias signale un nom absent. |
Vérifier alias nom et la catégorie avec type dans ce shell précis. |
| Le nom désigne encore une commande. | Rechercher une fonction, un builtin ou un fichier restant avec type -a nom. |
| L’alias revient dans un nouveau terminal. | Suivre les fichiers de démarrage et les définitions successives. |
| Les autres terminaux conservent l’alias. | Chaque shell possède son état ; vérifier et retirer la définition dans chaque session nécessaire. |
| Une commande déjà analysée semble garder l’ancien effet. | Revenir à une invite suivante pour que la nouvelle ligne soit lue après le retrait. |
Lorsque le comportement reste inattendu, vérifiez les candidats et le contexte d’exécution avant d’élargir la suppression. Un alias retiré ne corrige pas automatiquement une fonction de même nom ou un autre exécutable trouvé dans PATH.




