In .bash_profile assicurati di avere quanto segue:
# .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
Perché dovrebbe procurarselo? Non stai eseguendo il vero bash
:
$ echo $SHELL
/bin/sh
Nella maggior parte dei sistemi moderni sh
è un collegamento simbolico a una shell di base. Sulla mia Debian per esempio:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
Nel tuo caso, sh
è un collegamento a bash
ma, come spiegato in man bash
:
Se bash viene invocato con il nome sh, cerca di imitare il più fedelmente possibile il comportamento di avvio delle versioni storiche di sh, conformandosi anche allo standard POSIX. [...] Quando viene invocata come shell interattiva con il nome sh, bash cerca la variabile ENV, espande il suo valore se è definito e usa il valore espanso come nome di un file da leggere ed eseguire. Poiché una shell invocata come sh non tenta di leggere ed eseguire comandi da altri file di avvio , l'opzione --rcfile non ha effetto.
e
--norc
Non leggere ed eseguire il file di inizializzazione a livello di sistema/etc/bash.bashrc e il file di inizializzazione personale ~/.bashrci se la shell è interattiva. Questa opzione è attiva per impostazione predefinita se la shell viene richiamata come sh.
Quindi, poiché la tua shell predefinita è sh
, .bashrc
non si legge. Basta impostare la shell predefinita su bash usando chsh -s /bin/bash
.