PATH [détourné]

Bjr,
Existe-t-il un fichier ou le PATH est indiqué ?
Autre que :

  • /etc/profile
  • bash_profile
  • bashrc

Merci

Hello,

path est une variable d’environnement :

sh-3.1# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

Les variables d’environnement sont des variables dynamiques utilisées par les différents processus d’un système d’exploitation. Il n’y a pas de “fichier path” au sens ou tu l’entends.

si tu veux avoir la liste de variables d’environnement, tu tapes “env”:

sh-3.1# env
SHELL=/bin/sh
TERM=xterm
USER=root
SUDO_USER=John117Daboss
SUDO_UID=1009
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
PWD=/home/vsftpd
LANG=fr_FR.UTF-8
SHLVL=1
SUDO_COMMAND=/bin/sh
HOME=/home/Masteradm01
LOGNAME=root
SUDO_GID=1009
_=/usr/bin/env

:slightly_smiling:

re-
Ok. Prenons cette ligne :
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Est-ce que c’est la concaténation de plusieurs PATH indiqués dans divers fichiers ou simplement celui de ton /etc/profile ?

Pour être plus précis dans mon problème, ni un ajout (par édition du /etc/profile ou autres), ni les diverses commandes glanées sur le net, ne modifient “mon” PATH.
Voici le sempiternel résultat :phlinux# echo $PATH /bin:/sbin:/usr/bin:/usr/sbin
Alors qu’il m’est indispensable d’avoir en plus : /usr/X11R6/bin (chemin serveur X)

Tu peux rajouter cette ligne dans ton ~/.bashrc ou ton /etc/profile

Tu peux rajouter cette ligne dans ton ~/.bashrc ou ton /etc/profile

hello,

Regarde sur la page wiki :

fr.wikipedia.org/wiki/Variable_d’environnement

Tu sauras tout… tout… tout… sur le z… heu… sur le PATH.

:mrgreen: :mrgreen: :mrgreen:

re-
Le PATH est déjà écrit dans /etc/profile.
Apparemment “quelque chose” bloque la reconnaissance du chemin : que ce soit en console avec “export…” ou directement dans "profile"
Bizarre
Merci pour vos conseils

Pitêtre un problème de droit? tu indiques le chemin (chemin = path en anglais) pour qu’un utilisateur, “root” généralement, ou “apache”, ou ce que tu veux en fonction des cas, puisse lancer une application, à savoir le script vers lequel mène ton PATH.

Si tu fais un echo $PATH, tu as quoi?

D’autres part, tu veux indiquer à la machine où se trouve usr/X11R6/bin. Ok, mais j’imagine que c’est root qui doit l’utiliser ce chemain. Il a bien les droits dessus?

Soit dit en passant, ca me surprends. Tu as installé le serveur graphique, et pour le faire fonctionner tu dois passer par cette étape? Je n’ai pas fait ça, moi… (muarf, d’un autre côté, mon serveur, il marche pas!)

re-
Ce qui est “amusant” c’est qu’en virant le fichier “profile” et tous ceux de config du /home, le chemin reste le même, et tout fonctionne comme d’hab. Il doit donc y avoir une “mémoire” quelque part, non ?

Hello,

C’est “dynamique”. C’est chargé dans le buffer de la machine (la mémoire, si tu préfères), et configuré au lancement de la bécane en fonction des paramétrages présents dans l’OS. C’est “construit” en mémoire au boot, si tu préfères dire les choses ainsi.

tkt : moi aussi j’ai cherché le “fichier” au début… muarf!
Qui n’a pas eu cette idée, d’ailleurs? Après tout, si un tel fichier existait, ça aurait été cool : il aurait suffit d’entrer dedans pour y ajouter ce qu’on veut, commenter ou décomenter des lignes etc… Sauf que “monté dynamiquent”, c’est bien plus efficace, à mon avis.:slightly_smiling:

Bjr,
En fait, vu que j’ai tout viré, ton explication est logique.
Par contre ce qui m’inquiète (relativement) c’est que le fichier /etc/profile ne soit pas lu. Sur mon ordi habituel, j’ai fait l’essai et le changement de PATH dans le profile est bien pris en compte au reboot.
Peut être le script init qui est trop ancien. Je vais mettre une “mouture” Debian plus récente pour voir.
@+

Salut,

Petit truc à insérer dans votre .bashrc (après l’avoir essayé) :

Tiens, je me suis répondu à moi-même…

Monstre:/etc/vsftpd# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

Pas eu besoin de rajouter le Path de X11. C’est fait automatiquement, je confirme. Et naturellement, X11 est au bon endroit. :slightly_smiling:

Ouf!!

Bien.
Tu poses tout de même une question intéressante. En effet, je ne me la suis pas posé depuis un bon bail (au moins)…

Dans mon /etc/profile :

and Bourne compatible shells (bash(1), ksh(1), ash(1), …).

if [ “id -u” -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

if [ “$PS1” ]; then
if [ “$BASH” ]; then
PS1=’\u@\h:\w$ ‘
else
if [ “id -u” -eq 0 ]; then
PS1=’# ‘
else
PS1=’$ '
fi
fi
fi

export PATH

umask 022

Or, si je fais un echo $PATH :

D’abort en tant que root, puis en tant que “christian”:
Monstre:/usr/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
Monstre:/usr/bin# su christian
christian@Monstre:/usr/bin$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
christian@Monstre:/usr/bin$

On voit bien que grâce au fichier profile, suivant si tu te connectes en root ou en user lambda, tu auras tel ou tel PATH, ce qui est logique, dans la mesure ou cela permet d’interdire à un user lambda l’accès à des scripts réservés à root (les “/sbin”). D’où l’importance de ce script. D’où l’importance, aussi, de la façon dont on update les informations contenu dans PATH. Ainsi, tu remarqueras ici que dans le fichier profile, il manque “/usr/bin/X11”, alors qu’il apparait dans le $PATH. Il doit donc être chargé en mémoire - sans doute par le serveur X.

Bjr,
Bien. Merci pour les explications, bien qu’aucune ne résolve le problème.
Donc la parade du moment : mettre startx et xinit dans /usr/bin.
En attendant de comprendre. Merci encore
@+

ok,

Voyons les choses autrement :

Peux-tu nous dire :
-Ce que tu as quand tu fais un echo $PATH en tant que root.
-Ce que tu as quand tu fais un echo $PATH en tant que… un autre user, celui que tu utilises, par exemple.
-Ce que tu as dans ton /etc/profile.
-Ce que tu as dans ton profile utilisateur.
-Ce que tu veux obtenir exactement.
-Ce que tu entends par “startx et xinit dans /usr/bin.” ?

Pour ma part, j’ai :
Monstre:/home/vsftpd# slocate startx
/usr/bin/startx
/usr/share/man/man1/startx.1.gz

Monstre:/home/vsftpd# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
Par exemple, dans mon PATH, j’ai bien /usr/bin (entre autre, bien sûr), donc c’est bon, j’ai accès à tous les scripts qui s’y trouve… Je ne vois pas trop que tu veux rajouter, et surtout pas startx, dans le PATH.

Pardon : c’est pas clair.
:slightly_smiling:

Bjr,
En fait, je ne souhaitais pas modifier le PATH : c’est le système qui ne trouvait pas le chemin de “startx”. D’où mon questionnement à l’origine de ce fil.
Mais bon, pas de souci, maintenant le lancement de X se fait, c’est le principal.
Je ne vais pas entrer dans les détails pour “root” et l’utilisateur: il s’agit d’une structure minimaliste, donc il y a impasse sur la sécurité (de quoi horrifier le “pur linuxien”)
Merci pour votre aide
A bientôt

Eh bien, ta parade du moment, c’est la bonne configuration, de toute façon :wink: (Cf. ma propre config). En tout cas, tant mieux si ça marche:).

Au plaisir!