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

54

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é lors de la création d'un fichier .bash_aliases. Les alias ne sont pas apparus lorsque j'ai ouvert un nouveau terminal. Cependant, lorsque je tape source .bashrc , les alias apparaissent.

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

Comment puis-je y arriver?

    
posée Selah 08.07.2012 - 19:45
la source

5 réponses

95

Ce n'est pas nécessairement couru; en haut de la norme .bashrc est 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 existe une option pour exécuter le terminal bash comme un shell de connexion ou non. Avec Ubuntu, gnome-terminal ne fonctionne normalement pas comme un shell de connexion, donc .bashrc doit être exécuté directement.

Pour les shells de connexion (comme les terminaux virtuels), le fichier ~/.profile est normalement exécuté, sauf si vous avez soit ~/.bash_profile ou ~/.bash_login , mais ils ne sont pas présents par défaut. Par défaut, Ubuntu utilise uniquement .profile.

La norme ~/.profile contient ceci:

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

Cela fonctionne si .bashrc 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 doit pas être vide.

    
réponse donnée Marty Fried 08.07.2012 - 21:07
la source
12

Dans mon cas, simplement les lignes .bashrc loader 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 mon nouveau login

    
réponse donnée user3584014 06.05.2016 - 10:30
la source
4

Si $BASH_VERSION n'est pas défini, essayez d'utiliser la commande chsh pour définir 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 , ce qui était la cause du problème.

    
réponse donnée evan_b 11.11.2013 - 06:53
la source
4

.bash_profile conserve la configuration du shell bash. 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
    
réponse donnée SD. 10.01.2017 - 05:42
la source
0

Au lieu de parcourir tout ce qui se passe, allez simplement dans Edit -> Profile Preferences -> Title and Command -> "Run a custom command instead of my shell" et dans la boîte de commande personnalisée, écrivez bash et fermez-le. La prochaine fois que vous ouvrirez le terminal, il exécutera également bash automaticlly.

    
réponse donnée Furqan Ali 18.12.2016 - 19:57
la source

Lire d'autres questions sur les étiquettes