137 votes

.bashrc non exécuté lors de l'ouverture d'un nouveau terminal

Le code dans .bashrc ne s'exécute pas lorsque j'ouvre une nouvelle fenêtre de terminal dans Ubuntu 12.04. Je l'ai remarqué en créant un fichier .bash_aliases. Les alias ne s'affichent pas lorsque j'ouvre un nouveau terminal. Cependant, lorsque je tape source .bashrc les alias sont apparus.

.bashrc doit être exécuté chaque fois que j'ouvre une nouvelle fenêtre de terminal, n'est-ce pas ?

Comment faire pour que cela se produise ?

201voto

RHaguiuda Points 757

Il n'est pas nécessairement exécuté ; en haut du fichier .bashrc standard se trouve ce commentaire :

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

Je crois qu'il y a une option pour exécuter le terminal bash en tant que login Shell ou non. Avec Ubuntu, gnome-terminal ne s'exécute normalement pas en tant que login Shell, donc .bashrc doit être exécuté directement.

Pour les shells de connexion (comme les terminaux virtuels), normalement le fichier ~/.profile est exécuté, à moins que vous n'ayez ~/.bash_profile o ~/.bash_login mais ils ne sont pas présents par défaut. Par défaut, Ubuntu n'utilise que .profile.

La norme ~/.profile a ceci en elle :

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

Cela exécute .bashrc s'il est disponible - en supposant que $BASH_VERSION est présent dans votre environnement. Vous pouvez vérifier cela en entrant la commande echo $BASH_VERSION et il devrait afficher des informations sur le numéro de version - il ne devrait pas être vide.

58voto

user3584014 Points 681

Dans mon cas, simplement le .bashrc Les lignes du chargeur manquaient dans .bash_profile

# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi

Je l'ai ajouté manuellement et cela a fonctionné avec ma nouvelle connexion.

12voto

SD. Points 221

.bash_profile contient la configuration pour le bash Shell. Lorsque vous ouvrez un terminal, il lit et exécute d'abord les commandes à partir de ~/.bash_profile . Vous pouvez donc ajouter ce qui suit dans .bash_profile pour configurer le Shell en fonction de bashrc.

. ~/.bashrc

7voto

YasuDevil Points 225

Si $BASH_VERSION n'est pas défini, essayez d'utiliser l'option chsh pour régler votre Shell sur /bin/bash .

J'ai eu un problème similaire avec 12.04 LTS, et il s'est avéré que le nouveau compte d'utilisateur avait le Shell par défaut défini sur. /bin/sh qui était à l'origine du problème.

6voto

Nic Wanavit Points 288

Selon le commentaire de .profile

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

Alors voilà, si ~/.bash_profile o ~/.bash_login existe, ils seront exécutés à la place de ~/.profile .

Si vous voulez exécuter ~/.bashrc il suffit d'ajouter la ligne source ~/.bashrc en bash_profile .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X