Pourquoi dois-je source .bashrc chaque fois que j'ouvre le terminal pour que les alias fonctionnent? [dupliquer]

25

J'ai ajouté cette ligne dans mon ~/.bashrcdossier.

alias myserver='ssh [email protected]'

Cependant, lorsque j'ouvre le terminal et que je l'exécute myserver, le terminal se plaint que

-bash: myserver: command not found

Cependant, lorsque je source mon fichier .bashrc ( . .bashrc), l'alias fonctionne.

Néanmoins, je ne veux pas source le fichier à chaque fois que j'ouvre le terminal pour que l'alias fonctionne. Comment puis-je y arriver?

David Faux
la source
3
Ce commentaire en explique la raison. Cette question vous indique comment y remédier.
ughoavgfhw
Merci beaucoup! Je ne savais pas que le démarrage du shell exécute ces fichiers dans l'ordre. En effet, l'ajout . .bashrcdans les .bash_profileœuvres.
David Faux
@ughoavgfhw pouvez / devriez-vous changer votre commentaire en réponse? De cette façon, il peut être marqué comme une réponse.
soxman

Réponses:

25

En bref, vous placez vos alias dans le mauvais fichier .bashrc, c'est pourquoi vous devez continuer à exécuter la source pour que les alias fonctionnent dans toutes les nouvelles instances de terminal de connexion.

D'après le commentaire de Chris Johnsen sur Pourquoi .bashrc ne s'exécute-t-il pas automatiquement?

Par défaut, Terminal démarre le shell via / usr / bin / login, ce qui fait du shell un shell de connexion. Sur chaque plate-forme (pas seulement Mac OS X) bash n'utilise pas .bashrc pour les shells de connexion (uniquement / etc / profile et le premier de .bash_profile, .bash_login, .profile qui existe et est lisible). C'est pourquoi «mettre source ~ / .bashrc dans votre .bash_profile» est un conseil standard.

Pour plus d'informations, consultez la page de manuel pour bash:

man bash

Regardez ensuite sous la section INVOCATION.

MrDaniel
la source
Dois-je redémarrer pour que les choses fonctionnent? Parce que j'ai ajouté source ~/.bashrcà mon .bash_profile, mais je suis toujours confronté au même problème ...
Michiel
1
Non, dans la plupart des cas, il vous suffit d'ouvrir une nouvelle fenêtre de terminal pour que les modifications prennent effet, les modifications ne prendront effet que dans la fenêtre nouvellement ouverte.
MrDaniel
11

Vous pouvez toujours mettre

if [ -n "$BASH_VERSION" ] && [ -f $HOME/.bashrc ];then
    source $HOME/.bashrc
fi

dans le fichier ~/.profileou ~/.bash_profilesur mac je pense.

Oooor, vous pouvez simplement mettre vos affaires .profileou .bash_profile.

Dylan
la source
Ceci est noté dans l'autre réponse - pourquoi n'êtes-vous pas sûr de ces choses?
user151019
Veuillez lire cette question très similaire: apple.stackexchange.com/q/12993/22003 et y ajouter toute amélioration.
dan
@danielAzuelos Wait; voulez-vous que je commente sur l'autre page ou mette à jour ma réponse en fonction de l'autre question?
Dylan
@Mark Je pensais juste dans un sens très hypothétique - comme si le processus de terminal de quelqu'un ne savait pas pour générer le .profile? Leur terminal ne démarrerait probablement pas en premier lieu, mais c'est toujours possible ... comme si quelqu'un piratait son / usr / bin / login ou quelque chose.
Dylan
→ Dylan: veuillez lire cette question très similaire: apple.stackexchange.com/q/12993/22003 et vous trouverez une réponse à votre "peut-être?".
dan