OVH Cloud OVH Cloud

Problème de path

9 réponses
Avatar
Jean Magnan de Bornier
Bonjour =E0 tous,
Gentoo-Linux, emacs-cvs, shell=3Dzsh
Je viens de me rendre compte qu'emacs a un path diff=E9rent de celui que je
d=E9finis avec zsh (en regardant avec eshell); il doit exister un moyen de
dire =E0 emacs d'utiliser le path de mon shell?
(je n'ai rien trouv=E9 avec "emacs zsh path" sur go=FBt gueule...)

Merci d'avance
--=20
Jean Magnan de Bornier | Cours Victor Hugo
e-mots: jean at bornier.net | 13980 Alleins France
T 08 70 39 34 03 | P 06 09 17 35 87

9 réponses

Avatar
Sébastien Kirche
Le 11 February 2006 à 14:03, Jean Magnan de Bornier a formulé :

Bonjour à tous,



Bonjour,

Gentoo-Linux, emacs-cvs, shell=zsh
Je viens de me rendre compte qu'emacs a un path différent de celui que
je définis avec zsh (en regardant avec eshell); il doit exister un
moyen de dire à emacs d'utiliser le path de mon shell? (je n'ai rien
trouvé avec "emacs zsh path" sur goût gueule...)



Comment est démarré emacs ? Directement depuis le shell ou via une autre
application / bureau / menu démarrer ? Est-ce que tu te loggue
directement en terminal ou dans un gestionnaire type gdm / kdm / xdm ?

J'utilise également zsh et je viens de remarquer sur mon portable que
j'avais le même comportement : la faute n'est pas sur emacs mais c'est
lié 1) à la façon dont les processus héritent leur environnement de leur
parent 2) au fichier dans lequel la modification du path est faite.

En l'occurrence ici, je modifie mon path dans .zshenv, or comme la
machine démarre directement en mode graphique via wdm aucun shell n'est
lancé et si je lance ensuite emacs depuis un menu ou un raccourci du wm
et pas depuis un xterm, emacs hérite de l'environnement par défaut de la
machine donné par /etc/profile. Si je lance un emacs depuis un xterm
c'est ok.

Pour que les modifs soient prisent en compte pour toutes les
applications et non seulement celles lancées depuis un shell il faudrait
déplacer l'affectation du $PATH dans .profile (je n'ai pas le temps de
tester tout de suite).

HTH.
--
Sébastien Kirche
Avatar
Sébastien Kirche
Le 11 February 2006 à 14:03, Jean Magnan de Bornier a formulé :

Bonjour à tous,



Bonjour,

Gentoo-Linux, emacs-cvs, shell=zsh
Je viens de me rendre compte qu'emacs a un path différent de celui que
je définis avec zsh (en regardant avec eshell); il doit exister un
moyen de dire à emacs d'utiliser le path de mon shell?



Comment est démarré emacs ? Directement depuis le shell ou via une autre
application / bureau / menu démarrer ? Est-ce que tu te loggue
directement en terminal ou dans un gestionnaire type gdm / kdm / xdm ?

J'utilise également zsh et je viens de remarquer sur mon portable que
j'avais le même comportement : la faute n'est pas sur emacs mais c'est
lié 1) à la façon dont les processus héritent leur environnement de leur
parent 2) au fichier dans lequel la modification du path est faite.

En l'occurrence ici, je modifie mon path dans .zshenv, or comme la
machine démarre directement en mode graphique via wdm aucun shell n'est
lancé et si je lance ensuite emacs depuis un menu ou un raccourci du wm
et pas depuis un xterm, emacs hérite de l'environnement par défaut de la
machine donné par /etc/profile. Si je lance un emacs depuis un xterm
c'est ok.

Pour que les modifs soient prisent en compte pour toutes les
applications et non seulement celles lancées depuis un shell il faudrait
déplacer l'affectation du $PATH dans .profile (je n'ai pas le temps de
tester tout de suite).

(je n'ai rien trouvé avec "emacs zsh path" sur goût gueule...)



En l'occurrence, l'explication se trouve dans man zsh, aux paragraphes
«COMPATIBILITY» et «STARTUP/SHUTDOWN FILES».

HTH.
--
Sébastien Kirche
Avatar
Jean Magnan de Bornier
Le 11 février à 14:41:15 Sébastien Kirche
écrit notamment:

| Le 11 February 2006 à 14:03, Jean Magnan de Bornier a formulé :



| > Bonjour à tous,



| Bonjour,



| > Gentoo-Linux, emacs-cvs, shell=zsh
| > Je viens de me rendre compte qu'emacs a un path différent de celui que
| > je définis avec zsh (en regardant avec eshell); il doit exister un
| > moyen de dire à emacs d'utiliser le path de mon shell?



| Comment est démarré emacs ? Directement depuis le shell ou via une au tre
| application / bureau / menu démarrer ? Est-ce que tu te loggue
| directement en terminal ou dans un gestionnaire type gdm / kdm / xdm ?

Je démarre avec gdm -> xfce, ce dernier lance emacs de manière automati que
par le mécanisme de mémoire des sessions





| J'utilise également zsh et je viens de remarquer sur mon portable que
| j'avais le même comportement : la faute n'est pas sur emacs mais c'est
| lié 1) à la façon dont les processus héritent leur environnement de leur
| parent 2) au fichier dans lequel la modification du path est faite.



| En l'occurrence ici, je modifie mon path dans .zshenv, or comme la
| machine démarre directement en mode graphique via wdm aucun shell n'est
| lancé et si je lance ensuite emacs depuis un menu ou un raccourci du wm
| et pas depuis un xterm, emacs hérite de l'environnement par défaut de la
| machine donné par /etc/profile. Si je lance un emacs depuis un xterm
| c'est ok.

pareil pour moi




| Pour que les modifs soient prisent en compte pour toutes les
| applications et non seulement celles lancées depuis un shell il faudrait
| déplacer l'affectation du $PATH dans .profile (je n'ai pas le temps de
| tester tout de suite).



| > (je n'ai rien trouvé avec "emacs zsh path" sur goût gueule...)



| En l'occurrence, l'explication se trouve dans man zsh, aux paragraphes
| «COMPATIBILITY» et «STARTUP/SHUTDOWN FILES».



| HTH.

Oui, merci je vais creuser ça


--
Jean Magnan de Bornier | Cours Victor Hugo
e-mots: jean at bornier.net | 13980 Alleins France
T 08 70 39 34 03 | P 06 09 17 35 87
Avatar
Jean Magnan de Bornier
Le 11 février à 15:09:28 Jean Magnan de Bornier éc rit
notamment:

| Le 11 février à 14:41:15 Sébastien Kirche
| écrit notamment:



| | Le 11 February 2006 à 14:03, Jean Magnan de Bornier a formulé :
| >
| | > Bonjour à tous,
| >
| | Bonjour,
| >
| | > Gentoo-Linux, emacs-cvs, shell=zsh
| | > Je viens de me rendre compte qu'emacs a un path différent de celui que
| | > je définis avec zsh (en regardant avec eshell); il doit exister un
| | > moyen de dire à emacs d'utiliser le path de mon shell?
| >
| | Comment est démarré emacs ? Directement depuis le shell ou via une autre
| | application / bureau / menu démarrer ? Est-ce que tu te loggue
| | directement en terminal ou dans un gestionnaire type gdm / kdm / xdm ?



| Je démarre avec gdm -> xfce, ce dernier lance emacs de manière automa tique
| par le mécanisme de mémoire des sessions




[...]





| Oui, merci je vais creuser ça

Précision sur le démarrage d'emacs dans un terminal: si je démarre en mode
texte (-nw), il prend le path de zsh, mais en mode graphique non.

On peut fixer le path par M-x setenv RET PATH RET ... mais emacs ne s'en
souvient pas si on le ferme et le relance; existe-t-il un moyen de
sauvegarder ce nouveau path? Je ne vois rien dans le manuel emacs.

merci,
--
Jean Magnan de Bornier | Cours Victor Hugo
e-mots: jean at bornier.net | 13980 Alleins France
T 08 70 39 34 03 | P 06 09 17 35 87
Avatar
Ph. Idlavi
Le 11 février 2006 à 16h19:54,
Jean Magnan de Bornier écrivit :

[...]

On peut fixer le path par M-x setenv RET PATH RET ... mais emacs ne s'en
souvient pas si on le ferme et le relance; existe-t-il un moyen de
sauvegarder ce nouveau path? Je ne vois rien dans le manuel emacs.

merci,



À tout hasard:
C-h v exec-path

J'ai vu ça par:
M-x apropos path

HTH,
--
Philippe I.
Avatar
Jean Magnan de Bornier
Le 11 février à 19:20:09 Ph. Idlavi écrit
notamment:

| Le 11 février 2006 à 16h19:54,
| Jean Magnan de Bornier écrivit :



| > [...]
| >
| > On peut fixer le path par M-x setenv RET PATH RET ... mais emacs ne s'en
| > souvient pas si on le ferme et le relance; existe-t-il un moyen de
| > sauvegarder ce nouveau path? Je ne vois rien dans le manuel emacs.
| >
| > merci,



| À tout hasard:
| C-h v exec-path



| J'ai vu ça par:
| M-x apropos path

Philippe:

Merci beaucoup! J'ai modifié cette variable, mais ce n'est pas la bonne,
je ne sais pas pourquoi puisque d'après sa définition on dirait que c'e st
ce que je devrais modifier. Mais $PATH reste à sa valeur... alors qu'avec
M-x setenv elle est vraiment modifiée.

Florent:

Oui ton idée est comme d'habitude la bonne (je l'avais eue mais la syntaxe
m'avait manqué - shame on me!). Mais il y a quelque chose d'étrange. Si
j'écris dans .emacs:
(setenv "PATH" "/usr/local/texlive/2005/bin/i386-linux:$PATH"), la *même
chose* qu'en utilisant la commande M-x setenv, emacs considère que mon
PATH est maintenant /usr/local/texlive/2005/bin/i386-linux:$PATH
*verbatim* et bien sûr il ne trouve pas les applications dans son PATH par
défaut!

c'est normal, ça?

--
Jean Magnan de Bornier | Cours Victor Hugo
e-mots: jean at bornier.net | 13980 Alleins France
T 08 70 39 34 03 | P 06 09 17 35 87
Avatar
Sébastien Kirche
Le 11 February 2006 à 20:49, Jean Magnan de Bornier a formulé :

Si j'écris dans .emacs: (setenv "PATH"
"/usr/local/texlive/2005/bin/i386-linux:$PATH"), la *même chose* qu'en
utilisant la commande M-x setenv, emacs considère que mon PATH est
maintenant /usr/local/texlive/2005/bin/i386-linux:$PATH *verbatim* et
bien sûr il ne trouve pas les applications dans son PATH par défaut!



Oui, mais non : emacs ne fait pas d'expansion (sauf erreur de ma part)
des variables d'environnement directement comme dans un script shell.

De mon point de vue, *la* solution passe par la modification du path
dans le bon fichier du shell.

Si tu préfères tout de même modifier ton path localement
à Emacs et ses fils (beurk !) je propose un truc du genre :

(setenv "PATH"
(concat "mon/path/a/moi"
(concat ":" (getenv "PATH"))))

Mais ça me semble bien «quick and dirty»...
--
Sébastien Kirche
Avatar
Sébastien Kirche
Le 11 February 2006 à 21:53, Florent Georges s'est exprimé ainsi :

Sébastien Kirche wrote:

> Oui, mais non : emacs ne fait pas d'expansion (sauf erreur de ma
> part) des variables d'environnement directement comme dans un script
> shell.

En effet. Mais il peut le faire, voir ma reponse a Jean et
l'attribut SUBSTITUTE-ENV-VARS de 'setenv'.



Oui, j'ai vu. Excellent, j'ignorais complètement cette possibilité.

> De mon point de vue, *la* solution passe par la modification du path
> dans le bon fichier du shell.

Ca depend. Si c'est vraiment un ajout specifique a Emacs ?



Dans ce cas pourquoi pas, mais si j'ai bien compris la question de l'OP,
le problème était : « Dans Emacs le PATH est différent de celui que je
définis pour mon shell, comment faire en sorte que le PATH soit
identique dans emacs et dans zsh ? »

Le changement de PATH dans Emacs via setenv n'est que le soin d'un
symptôme mais pas de la cause du problème. Et le cas peut se reproduire
dans d'autres applications de la même façon.

> [...]
> Mais ça me semble bien «quick and dirty»...

Bof. Pouquoi pas ? ("Parce qu'il existe l'attribut
SUBSTITUTE-ENV-VARS", oui :-p).



Oui, je l'ignorais et je prends bonne note de ta solution. J'ai encore
un tas de chose à apprendre sur Emacs :o)
--
Sébastien Kirche
Avatar
Jean Magnan de Bornier
Le 11 février à 21:46:59 "Florent Georges" écrit
notamment:

| > c'est normal, ça?



| Vi. Je n'ai pas verifie, mais c'est du moins le fonctionnement
| auquel je m'attendrais : la commande Elisp 'setenv' ne fait pas de
| substitution de variables d'environnement (dans sa "syntaxe shell").
| Elle assigne une valeur, sans l'inspecter, a une variable. Utilisee
| interactivement, par contre, je trouve utile qu'elle le fasse.



| En fait, je viens juste de jeter un oeil a la doc de 'setenv', dont
| le prototype est :



| (setenv variable &optional value unset substitute-env-vars)



| Donc :



| (setenv "PATH" "/usr/.../bin:$PATH" nil t)

Oui, ça a l'air de fonctionner... donc je garde ça et je creuse quand m ême
l'option de Sebastien, histoire de digérer tout ça
MERCI À TOUS!!
--
Jean Magnan de Bornier | Cours Victor Hugo
e-mots: jean at bornier.net | 13980 Alleins France
T 08 70 39 34 03 | P 06 09 17 35 87