2009-09-08 13 views
10

J'ai quelques alias et fonctions définis dans ~/.bashrc.Commandes de .bashrc non disponible dans Emacs

Je commence emacs à partir d'une fenêtre de terminal en utilisant emacs -nw

Lorsque j'exécute M-x shell-command, les alias et les fonctions de ~/.bashrc ne sont pas disponibles, mais donne une "command not found". J'ai cherché beaucoup de googles mais tous les articles que je rencontre disent, si je les comprends correctement, que ~/.bashrc est l'endroit où cela devrait fonctionner (plutôt que ~/.profile ou ~/.bash_profile).

Qu'est-ce qui me manque?

Répondre

8

alias ne sont disponibles que dans un shell interactif - un instantané de la page man bash:

alias ne sont pas développés lorsque la coque n'est pas interactif, à moins que l'option shell expand_aliases est définie utilisant shopt (voir la description de shopt sous SHELL BUILTIN COMMANDS ci-dessous).

2

Si vous commencez Emacs à partir d'un shell interactif (dans lequel .bashrc, etc. ont exécuté), les commandes de votre .bashrc devrait être disponible pour les shell-command et shell, au moins c'est comment cela fonctionne pour moi . Mais oui, comme le dit l'autre réponse, il n'y a pas vraiment moyen d'obtenir un environnement .bashrc dans emacs. Il y a de la documentation sur un fichier .emacs_bash, mais cela n'a jamais fonctionné pour moi.


Vous avez mal lu votre question ici. Si vous recherchez des fonctions et des alias à la place des commandes en changeant les chemins dans .bashrc, le problème est dû à la non-interactivité. Je suppose que vous pouvez changer l'argument par défaut pour shell-command (jetez un oeil à explicit-bash-args) pour rendre bash interactif, mais cela a probablement des conséquences inattendues.

Questions connexes