Comment puis-je faire Emacs reconnaître bash variables d'environnement pour la compilation?
Je suis en train de compiler les u-boot via Emacs' mode de compilation, et il semble que Emacs ne sais pas comment trouver bash variables d'environnement. Même si je les ai, et permet de compiler via Emacs coquille de l'émulation, le mode de compilation essaye de compiler comme si ils ne sont pas là.
Que dois-je faire pour le rendre plus conscience de l'environnement?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer d'ajouter quelque chose comme à votre
.emacs
:Selon que vous avez défini les variables d'environnement dans
.bash_profile
ou.bashrc
vous pourriez avoir besoin d'ajuster légèrement de cet extrait. L'exemple est pour lePATH
variable, qui est un peu plus spécial (puisque vous avez à mettre enexec-path
dans Emacs), mais peut être étendue à travailler pour arbitraire de variables - vous pouvez avoir une liste de variables qui doivent être lues à partir de.bashrc
et mis dans Emacs.Je ne suis pas sûr de savoir si vous utilisez OS X ou GNU/Linux. Départ Emacs à partir de l'interface graphique de la barre de menu sous Linux habituellement dans Emacs qui n'ont pas la même
PATH
comme un lancé en ligne de commande. Ce problème remonte à la premièrexdm
Xsession scripts, et tandis qu'ils sont assez facile à corriger (essentiellement l'utilisation d'uneXsessionwrapper
script qui neexec $SHELL -c Xsession
afin que le shell est exécuté avant l'exécution de l'utilisateur Xsession), personne n'a pris la peine de le faire dans un temps très long (et je doute que quiconque). Pour autant que je sais que le problème est présent même dans moder xdm descendants commekdm
etgdm
.Sur OS X lors de la manipulation des variables d'environnement est un autre problème et pour obtenir vos variables d'environnement en général, vous devez exécuter Emacs à partir de la ligne de commande comme ceci
/Applications/Emacs.app/Contents/MacOS/Emacs
ou de jouer avec~/.MacOSX/environment.plist
. L'extrait de code que j'ai fourni doit vous couvrir dans les deux cas cependant.Mise à jour
Récemment, ce processus a été rendu plus facile par la exec-chemin-de-shell extension. Il définit la emacs
$PATH
plus ou moins de la même manière, mais en utilisant une extension est généralement préférable à un piratage de la solution vous-même.wrong type argument stringp nil
erreur.C'est là que les variables d'environnement du processus qui a commencé
emacs
sont:Vous semblez être en supposant que emacs a commencé à partir d'une bash session. Cependant, souvent les processus sous X sont démarrés à partir d'un sh session, pas lire les variables d'environnement que vous aviez mis dans votre
~/.bashrc
script. Une façon simple de contourner cela est de changer votre~/.xinitrc
fichier à utiliser bash au lieu de sh (il pourrait être aussi simple que l'ajout d'#!/bin/bash
en haut de la fiche).Source: gnu.org
#!/bin/bash
?Il n'est pas strictement répondre à votre question, mais vous pouvez toujours passer des variables d'environnement sur la
make
de ligne de commande. Par exemple : M-xcompile
RETmake -k CXXFLAGS='-Wall'
RET