Pourquoi dois-je source ~ / .bash_login chaque fois que j'ouvre un terminal


4

Chaque fois que je ferme et ouvre Terminal.app, il ne charge jamais mon fichier ~ / .bash_profile. Ma configuration RVM se trouve en haut du fichier mais ne le charge jamais.

Comme vous pouvez le constater, lorsque je tape rvmdans Terminal, cela signifie que command not foundc’est pénible car je dois courir à source ~/.bash_loginchaque fois que j’ouvre Terminal.

commande rvm introuvable

Suis-je le seul à avoir ce problème? Qu'est-ce que je fais mal?


Par curiosité, à quoi ressemble votre fenêtre de préférences de terminal, sous l'onglet "Démarrage"?
Jason Salaz

Ils le montrent: i.qyk.fr/loD8A.png
Dean Perry

1
Etrange, vu la page de manuel bash: When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.Et que le paramètre / usr / bin / login est explicite ...
Jason Salaz

3
"il ne charge jamais mon ~ / .bash_profile" "Je dois exécuter source ~/.bash_login" Lequel est-ce? Utilisez-vous ~ / .bash_profile ou ~ / .bash_login? Un seul d'entre eux sera exécuté.
Chris Page

Réponses:


2

Est-ce que ça doit être .bash_login? Essayez de le renommer .profile.


Ou .bash_profile- ce qui fonctionne
Rene Larsen

C'est très surprenant. ~ / .bash_login devrait fonctionner aussi bien que ~ / .bash_profile. Ça marche pour moi. Vous pouvez mettre un echo .bash_loginau début de ~ / .bash_login pour voir s’il est exécuté. Bien sûr, il ne sera pas exécuté si vous avez également ~ / .bash_profile.
Chris Page

2

Bash ne lit le .bash_loginfichier que s'il est lancé en tant que shell de connexion (le --logindrapeau lui a été attribué). Essayez .bashrcplutôt de le renommer , qui est évalué quand a bashété appelé en tant que shell interactif sans --loginindicateur.


J'ai essayé .bashrc mais il en va de même
Dean Perry Le

3
Avant Lion, Terminal crée des shells de connexion, à moins que vous ne fournissiez une commande personnalisée dans Préférences> Démarrage ou Préférences> Paramètres> [profil]> Shell . À partir de Mac OS X Lion 10.7, Terminal crée toujours des shells de connexion, même pour les commandes personnalisées, s'ils sont répertoriés dans / etc / shells.
Chris Page

1

Assurez-vous que votre script .bash_login ne contient pas de chemins relatifs tels que

source .profile

Changer en

source ~ / .profile

Lion change le répertoire dans votre onglet actuel ou à l’endroit où se trouve votre dernière session. Tous les chemins doivent donc être absolus.


1

Pour moi, bash dans Lion ne charge pas ~ / .profile non plus.

L'ajout d'une source ~/.profilecommande à exécuter au démarrage dans les préférences du shell a aidé, mais est plutôt dépourvu d'élégance.


Vérifiez vos préférences pour vous assurer que vous n'avez rien fait pour supprimer la création d'un shell de connexion. Y a-t-il quoi que ce soit dans Terminal> Préférences> Paramètres> [profil]> Shell> Démarrage ou Terminal> Préférences> Démarrage> Coques ouverts avec personnalisation?
Chris Page

0

Changer le .bashrc de

source .bash_profile

à

source ~/.bash_profile

a fait le tour pour moi.


2
Je recommande d'aller dans l'autre sens: avoir ~ / .bash_profile source ~ / .bashrc. Mettez tous les éléments que vous voulez avoir en commun pour vous connecter et les shells non-login dans ~ / .bashrc. ~ / .bash_profile ne doit contenir que des commandes de configuration pour les shells de connexion.
Chris Page

0

Le comportement par défaut sur mon MacBook sous Sierra (je ne connais pas High Sierra) semble être que Terminal s'exécutera .bash_profilelors de la connexion.

.bash_profileTerminal n’exécutera que s’il n’existe pas.bash_login .

Assurez-vous de ne pas avoir une place vide .bash_profiledans votre répertoire personnel. Si vous le faites, supprimez-le et reconnectez-vous; alors vous devriez voir le Terminal en cours d’exécution .bash_login.

(Empiriquement: mon MacBook ne pas ouvrir ou exécuter soit .profileou .bashrcMais en effet, je peux désactiver mon. .bash_loginEn exécutant touch ~/.bash_profile, et de le restaurer à l' ordre de travail en cours d' exécution rm ~/.bash_profile.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.