SSH : Comportement des variables (vérification) Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Bonjour,

Pouvez-vous vérifier si vous avez ce comportement,
que je sache si cela est "normal"
ou si c'est un problème du à mes configurations client/serveur.

Code : Tout sélectionner

dezix@local:~$ ssh toto@10.0.0.5 'echo $HOME'
/home/toto

dezix@local:~$ ssh toto@10.0.0.5 "echo $HOME"
/home/dezix
comme vous pouvez le constater,
les guillemets simples utilisent la variable distante
alors que
les guillemets doubles utilisent la variable locale.

Si vous avez quelques conseils à ce sujet, il seront les bienvenus ;
car je n'ai rien lu à ce sujet et je découvre cela en déboguant un script qui forcément ne fonctionne pas comme prévu.

Merci pour vos retours.

:006:
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
vv222
Membre actif
Membre actif
Messages : 852
Inscription : 18 avr. 2016, 20:14
Contact :
Status : Hors-ligne

C’est tout à fait normal, et absolument pas lié à SSH :wink:

Dans le premier cas, tu lances sur le serveur distant la commande echo $HOME, alors que dans le second cas tu y lances la commande echo /home/dezix.
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Merci pour ton aide.

:good:
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Je me suis réjouis trop vite !

Car je ne m'explique toujours pas :

Code : Tout sélectionner

dezix@local:~$ ssh toto@10.0.0.5 "echo $HOME ; hostname"
/home/dezix
model.virt
(model.virt c'est mon serveur distant)

Là, j'ai comme l'impression de jouer à la roulette russe :diablo:
**Simple Utilisateur** -- Debian stable - XFCE
PascalHambourg
Contributeur
Contributeur
Messages : 876
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

Piège classique de l'utilisation du shell. Le shell substitue les variables entre guillemets doubles, pas entre guillemets simples.
Dans

Code : Tout sélectionner

ssh toto@10.0.0.5 'echo $HOME'
C'est le shell distant qui substitue $HOME, alors que dans

Code : Tout sélectionner

ssh toto@10.0.0.5 "echo $HOME"
c'est le shell local qui substitue $HOME.
Dans les deux cas, c'est le shell distant qui exécute la commande "echo".
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

PascalHambourg a écrit : 28 févr. 2022, 15:27 Piège classique de l'utilisation du shell.

Merci :good:
**Simple Utilisateur** -- Debian stable - XFCE
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour

Au cas où et si besoin : https://mywiki.wooledge.org/Quotes
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

MicP a écrit : 02 mars 2022, 19:34 Bonjour
Au cas où et si besoin : https://mywiki.wooledge.org/Quotes
Salut et merci,
ce site semble un excellent point de départ pour améliorer mon usage de la ligne de commande.
:good:
**Simple Utilisateur** -- Debian stable - XFCE
Répondre