GNU/Linux >> Tutoriels Linux >  >> Linux

Bash ne lit pas .bashrc à moins qu'il ne soit démarré manuellement

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 .


Linux
  1. Personnalisation du shell Bash

  2. Comprendre la signification de `$_` ?

  3. Comment changer le shell Cron (sh en bash) ?

  4. Fonctions dans les variables shell ?

  5. Comment lire l'intégralité du script Shell avant de l'exécuter ?

Commande de lecture bash

Comment lire un fichier ligne par ligne dans Bash

.bashrc contre .bash_profile

Shell Scripting Partie V :Fonctions dans Bash

Shell Scripting Partie I :Premiers pas avec les scripts bash

Comment installer Linux Bash Shell sur Windows 10