.bash_profile ou .bashrc pour shell dans emacs?


11

J'ai écrit un alias pour une énorme commande et je l'ai stocké .bash_profileet à ma grande surprise, emacs n'a pas récupéré l'alias dans lequel j'ai écrit .bash_profile. Après quelques recherches sur Internet, j'ai créé un .bashrcfichier dans mon $ HOME avec la commande alias et seulement après que emacs a récupéré l'alias. Je suis confus parce que terminal.app prend l'alias de .bash_profilemais emacs ne prend l'alias que dans .bashrc.

Je courais M-x shellet je suis sur macOS. Quelqu'un peut-il m'expliquer quelle est la relation avec emacs et .bashrc& .bash_profile.

Plus précisément, comment puis-je demander à Emacs de lire mon .bash_profileen plus .bashrc?


1
Comment avez-vous amené Emacs à récupérer vos .bashrcalias? Je pose cette question parce que mes Emacs (et apparemment les autres) ne le font pas par défaut.
Arch Stanton

@ArchStanton voir @Vera Johanna réponse à cette question. C'est la même méthode que j'ai utilisée. Bien que maintenant j'utilise zshau lieu de bash :)
Chakravarthy Raghunandan

Réponses:


14

C'est le comportement correct. .bash_profileest pour les soi-disant shells de connexion. Comme lorsque vous vous connectez à votre ordinateur en mode texte, ou dans un émulateur de terminal à un autre ordinateur via sshou telnetou ...

.bashrcest destiné aux shells sans connexion, comme lorsque vous êtes déjà connecté et démarrez un nouveau xterm, ou dans ce cas le shellmode emacs .

Habituellement, le .bash_profilecontient des commandes à lire .bashrcaussi:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

donc le .bashrcest lu à chaque démarrage.


Ainsi, les alias appartiennent à .bashrc; il est également habituel de créer un élément distinct .bash_aliaseset de l'inclure .bashrcvia la même construction:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

11

En plus des remarques faites par @pingi, vous pouvez également utiliser un fichier de configuration distinct qui sera chargé uniquement pour le shell emacs ( M-x shell):

Depuis la page de manuel (emacs) Interactive Shell :

Emacs envoie au nouveau shell le contenu du fichier '~ / .emacs_SHELLNAME' en entrée, s'il existe, où SHELLNAME est le nom du fichier à partir duquel le shell a été chargé. Par exemple, si vous utilisez bash, le fichier qui lui est envoyé est «~ / .emacs_bash». Si ce fichier est introuvable, Emacs essaie avec '~ / .emacs.d / init_SHELLNAME.sh'.

Ceci est utile si vous souhaitez utiliser un format d'invite de shell différent dans Emacs, ou pour définir des fonctions pour transmettre des fichiers à emacsclient.

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.