Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/08/2015, à 20:20

visual1956

réinitialisation de la variable PATH

BONSOIR
étant débutant j'ai voulu mettre un répertoire dans ma variable d'environnement PATH mais j'ai du commettre une erreur car depuis les commande standard type ls ne fonctionne plus j'ai un message qui m’indique que le chemin /user/bin n'est plus dans PATH
comment faire pour retrouver la configuration initiale
par avance merci

Hors ligne

#2 Le 16/08/2015, à 20:40

f.x0

Re : réinitialisation de la variable PATH

Bonjour visual1956,

Esaies ceci en terminal

export PATH="${PATH}:/user/bin"

puis testes en tapant

ls

postes ensuite le retour de

echo $PATH

SOPI

Hors ligne

#3 Le 17/08/2015, à 06:05

visual1956

Re : réinitialisation de la variable PATH

BONJOUR
cela ne semble pas fonctionner
j'ai bien user/bin mais impossible d'obtenir une réponse à ls

]:/home/michel/Arduino:/home/michel/michel/::/home/michel/michel/Arduino:/michel/Arduino:/usr/bin:/user/bin:/user/bin

Hors ligne

#4 Le 17/08/2015, à 08:49

jplemoine

Re : réinitialisation de la variable PATH

f.x0 a écrit :
export PATH="${PATH}:/user/bin"

Le séparateur ne serait pas plutôt un point-virgule et non deux points comme sous Windows..

Je mettrais plutôt (sans aucune garantie : je ne peux pas tester : je suis sur un poste W$) :

export PATH="${PATH};/user/bin"

Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#5 Le 17/08/2015, à 09:24

f.x0

Re : réinitialisation de la variable PATH

Non non, il faut bien les 2 points.
Normalement il faudrait avoir :

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

SOPI

Hors ligne

#6 Le 17/08/2015, à 12:04

MicP

Re : réinitialisation de la variable PATH

Sur Xubuntu, la variable d'environnement PATH pour tous les utilisateurs (non root) du système est définie dans le fichier /etc/environment.

"cat /etc/environment" a écrit :

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

S'il est nécessaire de modifier cette variable pour le compte d'un utilisateur particulier, on peut le faire dans le fichier ~/.bashrc ou ~/.profile (donc, dans le répertoire personnel de l'utilisateur)
Voir aussi : doc.ubuntu-fr.org -> variables d'environnement au niveau session utilisateur

==
Si un répertoire ~/bin existe, il sera ajouté (en premier) dans le PATH de l'utilisateur (par le fichier ~/.profile) au moment de l'ouverture de sa session. Ce qui donnera, pour le compte utilisateur michel :

michel@virtXubu:~$ echo $PATH
/home/michel/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
michel@virtXubu:~$ 

=======

michel@virtXubu:~$ which ls
/bin/ls
michel@virtXubu:~$ 

Donc, c'est sûr qu'avec le PATH qui était en cours, impossible pour le système d'accéder à la commande ls sans spécifier son chemin absolu (qui a été retournée par la commande which) sur la ligne de commande.

=======

…j'ai voulu mettre un répertoire dans ma variable d'environnement PATH…

Comment as-tu procédé ?

Dernière modification par MicP (Le 17/08/2015, à 13:36)

Hors ligne

#7 Le 17/08/2015, à 19:59

visual1956

Re : réinitialisation de la variable PATH

bonsoir
en réponse à la question de MicP j'ai utilisé l'instruction suivante

export PATH=$PATH:$home/michel/Arduino

Hors ligne

#8 Le 17/08/2015, à 21:06

Alex10336

Re : réinitialisation de la variable PATH

Essaye:

export PATH="$PATH:/home/michel/Arduino"

ou

export PATH="$PATH:$HOME/Arduino"

Dernière modification par Alex10336 (Le 17/08/2015, à 21:07)


« On ne répond pas à une question par une autre question. » (moi ;-) )

Hors ligne

#9 Le 17/08/2015, à 23:02

abelthorne

Re : réinitialisation de la variable PATH

Qu'est-ce que c'est que ce /user/bin dont vous parlez depuis le début ? C'est /usr, pas /user, normalement...

Hors ligne

#10 Le 17/08/2015, à 23:21

f.x0

Re : réinitialisation de la variable PATH

C'est vrai, mais je crois qu'il faut refaire à neuf le PATH.


SOPI

Hors ligne

#11 Le 18/08/2015, à 06:29

visual1956

Re : réinitialisation de la variable PATH

bonjour
je veux bien refaire entièrement le path mais comment ?

Hors ligne

#12 Le 18/08/2015, à 09:30

abelthorne

Re : réinitialisation de la variable PATH

À priori, il devrait se régler tout seul comme il faut, à moins que tu le modifies toi-même à chaque démarrage. Est-ce que tu as ajouté une commande qui le redéfinit quelque part, par exemple dans ~/.profile ?

Pour commencer, qu'est-ce que tu as fait quand tu as "voulu mettre un répertoire dans [ta] variable d'environnement PATH" ? J'imagine que tu n'as pas simplement tapé une commande export dans le terminal, le changement ne résisterait pas à un redémarrage (même pas à la fermeture du terminal).

Dernière modification par abelthorne (Le 18/08/2015, à 14:51)

Hors ligne

#13 Le 18/08/2015, à 09:41

MicP

Re : réinitialisation de la variable PATH

Juste après avoir démarré et s'être identifié, quel est le retour de la commande :

/bin/echo $PATH

=======
Si tu n'a pas de répertoire ~/bin, le retour de /bin/echo $PATH devrait correspondre au contenu du fichier /etc/environment :

michel@virtXubu:~$ /bin/echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
michel@virtXubu:~$ 
michel@virtXubu:~$ /bin/cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
michel@virtXubu:~$ 

=======

visual1956 post #7 a écrit :

…export PATH=$PATH:$home/michel/Arduino…

La bonne syntaxe aurait plutôt été :

export PATH="$PATH:/home/michel/Arduino"

Mais comme abelthorne le fait justement remarquer, il faudrait savoir si c'était une ligne de commande entrée dans une fenêtre de terminal virtuel (ou autre) ou dans un fichier, lequel, et à quel endroit dans ce fichier a été placée cette ligne de commande.

Dernière modification par MicP (Le 18/08/2015, à 14:56)

Hors ligne

#14 Le 18/08/2015, à 20:52

visual1956

Re : réinitialisation de la variable PATH

BONSOIR
Que de soutien !!

Pour répondre aux différentes questions
a) j"ai effectué la commande via une fenêtre virtuelle
b) en effet après un redémarrage j'ai retrouvé mon PATH correct
donc le problème technique est résolu mais je reste sur ma faim car j'ai horreur de ne pas comprendre
pourriez vous m'éclairer sur les aspects suivants :
pourquoi une action dans le terminal virtuel est différente d'une commande dans le terminal ?
comment mettre de manière définitive l'adresse de mon programme "arduino" qui se trouve dans /home/michel/Arduino ?
la syntaxe utilisée  pour export .si je comprends bien "export" indique que l'on veut écrire dans un fichier mais j'aurais personnellement écrit export $PATH ="/home/michel/Aduino" sachant que ce qui existe entre les "" correspond au chemin à mémoriser
dans l'attente de votre aide

Hors ligne

#15 Le 18/08/2015, à 21:09

vv221

Re : réinitialisation de la variable PATH

La meilleure méthode n’est pas de modifier ton $PATH, mais de créer un lien vers ton exécutable sous un chemin qui s’y trouve déjà (je conseille "~/bin").
Ce qui se fait par une commande de ce type (en adaptant le chemin bien sûr) :

ln -s ~/Arduino/mon_exécutable ~/bin

Jouer sur Ubuntu ? Facile !

Hors ligne

#16 Le 18/08/2015, à 22:28

abelthorne

Re : réinitialisation de la variable PATH

visual1956 a écrit :

pourquoi une action dans le terminal virtuel est différente d'une commande dans le terminal ?

Il n'y a aucune différence, tu as dû faire une fausse manip.

la syntaxe utilisée  pour export .si je comprends bien "export" indique que l'on veut écrire dans un fichier mais j'aurais personnellement écrit export $PATH ="/home/michel/Arduino" sachant que ce qui existe entre les "" correspond au chemin à mémoriser

Non : export sert à régler une variable d'environnement, pas à écrire dans un fichier. Et on ne met pas le $ avec la commande export. Si tu écris export PATH="/home/michel/Arduino", tu n'ajoutes rien au PATH, tu remplaces sa valeur. Donc tu perds (dans le shell courant) la valeur d'origine du PATH. Comme expliqué plus haut, il faut plutôt utiliser une commande du genre export PATH=/home/michel/Arduino:$PATH : comme la nouvelle valeur sera interprétée avant le réglage (l'opération sera lue de droite à gauche, quoi), la valeur originale de $PATH sera remplacée avant de régler la nouvelle. Ce serait équivalent à export PATH=/home/michel/Arduino:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Et donc, les variables que tu règles sont locales au shell où tu le fais : si tu ouvres un terminal et que tu tapes export MACHIN=truc et que tu tapes echo $MACHIN, le terminal va t'afficher "truc". Mais si tu le fermes, que tu en rouvres un et que tu tapes à nouveau echo $MACHIN, le terminal va t'afficher une ligne vide puisque $MACHIN n'est plus définie (la valeur a été perdue en fermant le terminal où elle avait été réglée).

Note : les guillemets ne sont pas indispensables quand tu règles la valeur d'une variable mais ils peuvent être utiles s'il y a des caractères spéciaux et notamment des espaces dans la valeur que tu règles. Comme il n'y en a pas dans les chemins utilisés dans l'exemple ci-dessus, on peut s'en passer mais tu peux les mettre quand même si tu préfères.

Note 2 : $PATH correspond à l'ensemble des dossiers où le shell va aller chercher une commande quand tu la tapes sans préciser son chemin. C'est pour ça que si tu remplaces sa valeur au lieu de la récupérer pour ajouter un ou plusieurs dossiers, tu te retrouves dans l'impossibilité de lancer les commandes habituelles.
Il faut aussi savoir que si tu ne précises pas le chemin d'une commande, le shell va uniquement chercher dans les dossiers du PATH et jamais ailleurs, notamment dans le dossier courant. Si tu as une commande ma_commande dans ~/bin, que tu te places dans le dossier depuis un terminal (cd ~/bin) puis que tu tapes ma_commande, le shell ne va pas la trouver (si ~/bin n'a pas été rajouté dans le PATH, bien sûr). Il faut alors préciser qu'elle est dans le dossier courant en la lançant avec ./ma_commande pour qu'il la trouve. Le point (.) représente le dossier courant et le double-point (..) le dossier parent.
(Quand je parle de commande, c'est tout ce qui est exécutable : aussi bien les binaires que les scripts qui ont le flag exec.)

Dernière modification par abelthorne (Le 18/08/2015, à 22:36)

Hors ligne

#17 Le 20/08/2015, à 06:19

MicP

Re : réinitialisation de la variable PATH

Il y a aussi une méthode qui consiste à installer les applications en utilisant la logithèque du système.

De cette façon, en installant le paquetage arduino, un raccourci sera créé et accessible depuis le menu de l'interface graphique et tous les fichiers sont installés correctement.
(par exemple, l'application arduino sera installée dans le répertoire /usr/share/, un script pour la lancer sera installé dans /usr/bin, etc.)

=======

michel@debG53SW:~$ echo $maVar

michel@debG53SW:~$ # ça n'a rien donné car la variable "maVar" n'a pas encore été définie.
michel@debG53SW:~$ maVar="hippopotamentutu"
michel@debG53SW:~$ echo $maVar
hippopotamentutu
michel@debG53SW:~$ # OK, la variable est bien définie et la valeur "hippopotamentutu" lui a été assignée.
michel@debG53SW:~$ echo $SHLVL
1
michel@debG53SW:~$ bash
michel@debG53SW:~$ echo $SHLVL
2
michel@debG53SW:~$ echo $maVar

michel@debG53SW:~$ # Et oui : Tant qu'elle n'a pas été "exportée", la variable "maVar" n'est pas accessible depuis le processus fils.
michel@debG53SW:~$ exit
exit
michel@debG53SW:~$ echo $SHLVL
1
michel@debG53SW:~$ export maVar
michel@debG53SW:~$ # Voilà : la variable "maVar" a maintenant été exportée.
michel@debG53SW:~$ bash
michel@debG53SW:~$ echo $SHLVL
2
michel@debG53SW:~$ echo $maVar
hippopotamentutu
michel@debG53SW:~$ 

Dernière modification par MicP (Le 20/08/2015, à 06:55)

Hors ligne