Dans .bash_profile, assurez-vous d'avoir les éléments suivants :
# .bash_profile
# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
. ~/.profile
fi
# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
. ~/.bashrc
fi
Pourquoi s'en procurerait-il ? Vous n'exécutez pas true bash
:
$ echo $SHELL
/bin/sh
Dans la plupart des systèmes modernes sh
est un lien symbolique vers un shell de base. Sur ma Debian par exemple :
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
Dans votre cas, sh
est un lien vers bash
mais, comme expliqué dans man bash
:
Si bash est appelé avec le nom sh, il essaie d'imiter le comportement au démarrage des versions historiques de sh aussi fidèlement que possible, tout en se conformant également à la norme POSIX. [...] Lorsqu'il est appelé en tant que shell interactif avec le nom sh, bash recherche la variable ENV, développe sa valeur si elle est définie et utilise la valeur développée comme nom d'un fichier à lire et à exécuter. Depuis un shell appelé en tant que shn'essaye pas de lire et d'exécuter des commandes à partir d'autres fichiers de démarrage , l'option --rcfile n'a aucun effet.
et
--norc
Ne lisez pas et n'exécutez pas le fichier d'initialisation système /etc/bash.bashrc et le fichier d'initialisation personnel ~/.bashrci si le shell est interactif. Cette option est activée par défaut si le shell est appelé en tant que sh.
Donc, puisque votre shell par défaut est sh
, .bashrc
n'est pas lu. Définissez simplement votre shell par défaut sur bash en utilisant chsh -s /bin/bash
.