2009-06-05 7 views
13

Mon script d'initialisation bash (~/.profile) contient des initialisations importantes, mais chaque fois que j'utilise shell-command ou compile dans emacs, ce fichier init n'est pas lu, et sans ces initialisations mes commandes bash dans emacs échoueront :(Je force emacs à exécuter mon fichier init pour le shell qu'il utilise pour shell-commande?Comment faire emacs shell exécuter le fichier init automatiquement?

Clarification: Je ne parle pas de shell Mx, qui lit mon fichier init très bien lorsque j'ai symlinked .profile à .emacs_bash.

Répondre

22

Déplacer votre routine d'initialisation dans votre fichier ~/.bashrc

Ensuite, ajoutez la ligne

source ~/.bashrc 

dans votre fichier ~/.bash_profile. Voir le bash man page pour une explication détaillée des fichiers de démarrage qui sont chargés quand. La clé est la différence entre une enveloppe interactive et non-interactive, de même que la différence entre une connexion et un non-connexion shell.

En général, .bash_profile est exécuté lors de la connexion au système en utilisant un obus alors .bashrc est exécuté lors du démarrage d'une nouvelle coque (L'application Terminal OS X est une exception à cette règle car il fonctionne .bash_profile pour chaque nouvelle instance terminal). Pour plus d'informations sous forme d'article, look here.

+1

J'ai symbolisé mon profil .bashrc et .bash_profile. Ne semble pas fonctionner encore. Emacs démarre-t-il un shell interactif ou non interactif? J'ai aussi essayé d'ajouter --login aux arguments-bash-args, et toujours pas de chance. – polyglot

+1

Ahh, maintenant je peux encore aimer ma coquille Emacs! Je vous remercie! : D –

+0

@DanFilimon c'était aussi la solution complète à mon problème! :) Shell Emacs fonctionne avec nvm maintenant! – geoyws

2

Creuser à travers la source elisp; semble que la commande shell dans emacs exécute simplement bash -c "commande" dans mon cas. La solution est de démarrer emacs (emacs &) dans un shell où mon profil .profile est déjà exécuté (au lieu de démarrer emacs à partir des menus de l'interface graphique de mon gestionnaire de fenêtres).

+0

Merci, polyglotte, le démarrage d'emacs à partir d'un terminal a fonctionné pour moi aussi. – Upgradingdave

5

J'utilise Mac, shell-command n'a pas exécuté .bashrc, ni .bash_profile, j'ai googlé une solution pour que mon problème PATH soit corrigé.

mettre ceci dans votre .emacs: (setenv "source ~/.bashrc; PATH echo -n $" "PATH" (shell à commande string))

plus de détails, voir: How to make emacs to run my ~/.bash_profile

Questions connexes