En .bash_profile, asegúrese de tener lo siguiente:
# .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
¿Por qué lo obtendría? No estás ejecutando verdadero bash
:
$ echo $SHELL
/bin/sh
En la mayoría de los sistemas modernos sh
es un enlace simbólico a un shell básico. En mi Debian por ejemplo:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
En tu caso, sh
es un enlace a bash
pero, como se explica en man bash
:
Si bash se invoca con el nombre sh, intenta imitar el comportamiento de inicio de las versiones históricas de sh lo más fielmente posible, mientras también cumple con el estándar POSIX. [...] Cuando se invoca como un shell interactivo con el nombre sh, bash busca la variable ENV, expande su valor si está definido y usa el valor expandido como el nombre de un archivo para leer y ejecutar. Dado que un shell invocado como shno intenta leer ni ejecutar comandos desde ningún otro archivo de inicio , la opción --rcfile no tiene ningún efecto.
y
--norc
No lea ni ejecute el archivo de inicialización de todo el sistema/etc/bash.bashrc y el archivo de inicialización personal ~/.bashrc si el shell es interactivo. Esta opción está activada de forma predeterminada si el shell se invoca como sh.
Entonces, dado que su shell predeterminado es sh
, .bashrc
no se lee. Simplemente configure su shell predeterminado para bash usando chsh -s /bin/bash
.