Bash no lee .bashrc a menos que se inicie manualmente

Bash no lee .bashrc a menos que se inicie manualmente

bashno se obtendrá .bashrcdesde una terminal interactiva a menos que lo ejecute manualmente bashdesde una terminal:

$ bash

o obtenerlo manualmente:

$ source ./.bashrc

o corriendo:

$ st -e bash

Aquí hay algunos resultados útiles, espero:

$ echo $TERM
st-256color

$ echo $SHELL
/bin/sh

$ readlink /bin/sh
bash

$ shopt login_shell
login_shell     off

Estoy en CRUX Linux 3.0 y uso dwmy st. Intenté usarlo .bash_profiley .profilesin éxito.

¿Algunas ideas?

Respuesta1

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

Respuesta2

¿Por qué lo conseguiría? Su shell predeterminado no es bash, pero sh:

$ echo $SHELL
/bin/sh

En la mayoría de los sistemas modernos, shes 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 su caso, shes un enlace a bashpero, como se explica en man bash:

Si se invoca bash con el nombre sh, intenta imitar el comportamiento de inicio de las versiones históricas de sh lo más fielmente posible, al mismo tiempo que 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. Desdeun shell invocado como sh no intenta leer ni ejecutar comandos de 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 ni 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, .bashrcno se lee. Simplemente configure su shell predeterminado para bash usando chsh -s /bin/bash.

información relacionada