281 votes

Pourquoi le fichier .bashrc ne s'exécute-t-il pas automatiquement ?

J'ai mis des commandes alias dans mon .bashrc afin qu'ils soient chargés chaque fois que j'ouvre une nouvelle fenêtre de terminal. Pourtant, cela ne se produit pas.

Je dois sélectionner run script: dans le Terminal>Préférences>" MonThèmeParDéfaut ">Préfane shell et ajouter : source .bashrc && clear pour qu'il fonctionne...

Cela semble étrange car de nombreux tutoriels indiquent qu'il suffit d'ajouter à la section .bashrc et tout va bien.

Notez que je ne cours pas dans bash lorsque j'utilise le terminal, je préfère l'autre (par défaut) (je ne sais pas ce que c'est), parce qu'il me montre où je suis tout le temps, par exemple :

>>d54c6b47b:~ romeo$

à la place de :

>>bash$

Dans bash tout est chargé comme il se doit.

Donc ma question est, pourquoi mon .bashrc se charge automatiquement et ai-je dû ajouter l'option pour l'appeler à chaque fois ?

De plus, un tutoriel m'a dit de faire quelque chose comme :

$alias la=’ls -la’ >> ~/.bashrc

qui devrait écrire l'alias dans mon .bashrc cela ne fonctionne pas non plus...

Notez que je suis un novice en matière d'UNIX, alors soyez indulgent.

0 votes

Je pense que c'est très proche de apple.stackexchange.com/questions/7984/ .

1 votes

Si vous utilisez plutôt l'option par défaut zsh shell (pas i.e : bash ) configuré dans OS X 2019+ (actuellement Catalina), voir apple.stackexchange.com/a/338622/192005

0 votes

@mmmmmm j'ai annulé votre édition. La question porte clairement sur bash, et il y a même des réponses récentes indiquant que zsh fonctionne différemment.

11voto

Luis S Points 119

La recherche de .profile dans .bash_profile a fonctionné pour moi.

echo 'source ~/.profile' >> ~/.bash_profile

2 votes

Le sourcing de .profile dans .bash_profile est une excellente chose à faire, mais cela ne suffit pas pour que .bashrc soit exécuté par les shells de connexion. Votre .profile doit avoir déjà sourcé .bashrc, ce qui pourrait causer des problèmes si jamais vous utilisez un shell autre que bash. La plupart des utilisateurs de Mac ne le feront jamais, mais si vous le faites pour une raison quelconque, souvenez-vous de ceci :)

0 votes

Pour développer ce qu'a dit @TerryN : assurez-vous d'obtenir les sources suivantes .bashrc de votre .bash_profile et non de .profile . .bash_profile est spécifique à Bash et devrait être à l'origine des deux autres.

1 votes

En 2019+ (installations de Mac OS X Caltalina), le shell par défaut est zsh . Il ne s'agit pas d'une source .bash* automatiquement et commence avec .profile .

6voto

dman Points 169

J'ai découvert qu'après avoir installé rvm (auto-installateur, pas de modifications manuelles), il avait créé un fichier ~/.bash_login pour lui-même, alors que je n'en avais jamais eu auparavant.

Cependant, cela signifie que mon ~/.profile les configurations et les alias ne sont plus chargés ! Beaucoup de raccourcis ont disparu. Je pensais qu'ils s'exécutaient séquentiellement, pas exclusivement :-/

J'ai ajouté

. ~/.profile 

à ~/.bash_login pour enchaîner les choses comme je l'avais prévu.

0 votes

+1, c'est la situation que j'avais. J'ai trouvé que soit .bash_login soit .bash_profile empêchera .profile d'être exécuté... Je ne sais pas pourquoi bash ressent le besoin d'avoir autant de fichiers de démarrage conflictuels.

1 votes

.profile est commun à plusieurs shells différents et ne devrait contenir que du code sh compatible POSIX. .bash_profile est spécifique au CBA et peut contenir du code spécifique au CBA. En général, si vous utilisez Bash, vous devriez préférer .bash_profile à moins que vous ne fassiez attention à ce que votre code de démarrage ne contienne rien qui dépende de Bash. Quel que soit le programme créé .bash_login l'a probablement fait parce qu'il contient du code spécifique à Bash, mais il aurait dû inclure du code pour le source .profile s'il existe.

3voto

J S Points 439

Mettre...

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

...en ~/.bashrc et ensuite la source ~/.bashrc dans mon ~/.bash_profile n'a pas fonctionné pour le programme Terminal qui est installé.

Mais ensuite je suis allé dans le menu déroulant Editer > Préférences du profil , Titre et commandement et sélectionné Exécuter une commande en tant que shell de connexion dans la section des commandes de cette page.

Après avoir fait cela, le démarrage d'un nouveau terminal montre le résultat souhaité lorsque je tape

 type rvm|head -1

c'est-à-dire "rvm est une fonction". Il ne l'a pas fait jusqu'à ce que je fasse ce changement, et c'est le seul changement que j'ai fait après la modification de l'article. .bash_profile y .bashrc les changements décrits dans d'autres réponses ici.

2voto

arun rana Points 29

Tout d'abord, laissez-moi vous dire que ~/.bashrc est le fichier qui est exécuté chaque fois qu'un deuxième shell est appelé (lors de l'exécution d'un script, par exemple), et ~/.profile est appelé à chaque connexion.

Je vous recommande donc d'écrire . ~/.bashrc dans votre ~/.profile et cette commande exécutera le fichier bashrc à chaque fois que vous vous connecterez.

0 votes

Quand .profile est exécuté à la connexion, il exécute automatiquement le fichier .bashrc.

0 votes

Ainsi, le fichier .bashrc est exécuté indirectement à chaque connexion.

1 votes

Bashrc est pour les shells de non-login. bash_profile/bash_login/profile/quelque chose d'autre est pour les shells de login. C'est une source d'une énorme quantité de conflits, impliquant ce qui est et n'est pas un shell de connexion (une session écran/tmux par exemple, un terminal dans un environnement de bureau, etc.) Ce n'est pas nécessairement le "second shell". C'est une question d'entrée dans le shell.

1voto

zhisme Points 121

J'ai rencontré le même problème après avoir installé rbenv sur mon serveur distant (Digital Ocean) Ubuntu 16.04.

Il a en quelque sorte créé ~/.bash_profile . C'est la même chose ~/.bashrc sur un système OS X.

Et Ubuntu a commencé à lire seulement ~/.bash_profile mais pas ~/.bashrc comme il se doit.

Donc j'ai juste sauvegardé mes données dans ~/.bash_profile avec ça :

mv ~/.bash_profile ~/.bash_profile.bak

Et renommé l'ancien ~/.bashrc à ~/.bash_profile

mv ~/.bashrc ~/.bash_profile

Cela a fonctionné pour moi. Après ma connexion ssh, j'ai tout chargé en ~/.bashrc .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X