TL;DR : En Gunnar Hjalmarsson dit , mettre des alias dans ~/.bash_aliases
.
Les commandes dans ~/.profile
sont exécutées par des shells de connexion. Ce fichier est un bon endroit pour faire des choses qui doivent être faites une fois au début de chaque session mais qui ne doivent pas être répétées à chaque fois qu'un nouveau Shell est démarré. ~/.profile
permet de définir des variables d'environnement qui seront héritées par tous les processus descendants.
Les alias ne sont pas hérités, et le Shell que vous obtenez dans une fenêtre de terminal sous Ubuntu n'est pas (par défaut) un Shell de connexion. Pour définir des alias pour tous vos shells Bash interactifs, les définitions doivent être placées à un endroit où elles seront exécutées chaque fois que vous démarrerez un Shell.
Les endroits habituels sont soit à l'intérieur, soit à l'extérieur :
~/.bashrc
~/.bash_aliases
Nouvelle source de shells interactifs sans login ~/.bashrc
(tout comme certains shells non interactifs). Votre ~/.profile
Par défaut, les sources ~/.bashrc
.
La valeur par défaut ~/.bashrc
dans Ubuntu vérifie si ~/.bash_aliases
existe et en est la source.
Je recommande de placer les nouveaux alias dans ~/.bash_aliases
.
Sourcing ~/.profile
permet de définir les alias, mais il réexécute également tout le reste du fichier, dont la plupart n'ont pas besoin d'être réexécutés, et dont certains peuvent faire des choses que vous ne voulez pas. Par exemple, ~/.profile
vérifie si ~/bin
existe et, si c'est le cas, l'ajoute à votre $PATH
. Si vous vous approvisionnez en ~/.profile
plusieurs fois, il est possible que le même répertoire apparaisse plusieurs fois dans le fichier $PATH
. Il faudrait que cela se produise assez souvent pour causer un problème de performance significatif. Mais même une seule occurrence supplémentaire peut être source de confusion lorsque vous inspectez la sortie d'une commande telle que printenv PATH
.
Si vos alias ne sont pas définis même dans les shells de connexion initiaux comme lorsque vous vous connectez à partir d'une console virtuelle ou via SSH, puis en tant que Kulfy fait allusion à Il se peut que le problème soit lié au fait que vous avez un ~/.bash_profile
o ~/.bash_login
fichier. Si un tel fichier existe, les shells de connexion Bash l'extraient à la place de ~/.profile
. Le plus souvent, vous ne voudrez pas avoir un tel fichier sur Ubuntu, et si c'est le cas, vous voudrez très probablement qu'il soit source ~/.profile
de manière à ce que les commandes dans ~/.profile
toujours en cours.
Mais même si c'est le cas, vous ne devez pas définir d'alias dans la rubrique ~/.profile
(ni en ~/.bash_profile
o ~/.bash_login
), car cela ne les définit pas dans les shells sans login.