Considère ceci:
$ ssh localhost bash -c 'export foo=bar'
terdon@localhost's password:
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
declare -x HOME="/home/terdon"
declare -x LOGNAME="terdon"
declare -x MAIL="/var/spool/mail/terdon"
declare -x OLDPWD
declare -x PATH="/usr/bin:/bin:/usr/sbin:/sbin"
declare -x PWD="/home/terdon"
declare -x SHELL="/bin/bash"
declare -x SHLVL="2"
declare -x SSH_CLIENT="::1 55858 22"
declare -x SSH_CONNECTION="::1 55858 ::1 22"
declare -x USER="terdon"
declare -x XDG_RUNTIME_DIR="/run/user/1000"
declare -x XDG_SESSION_ID="c5"
declare -x _="/usr/bin/bash"
Pourquoi l'exportation d'une variable dans une bash -csession exécutée via ssh entraîne-t-elle cette liste de declare -xcommandes (la liste des variables actuellement exportées, pour autant que je sache)?
Exécuter la même chose sans le bash -cne fait pas ça:
$ ssh localhost 'export foo=bar'
terdon@localhost's password:
$
Cela ne se produit pas non plus si nous ne export:
$ ssh localhost bash -c 'foo=bar'
terdon@localhost's password:
$
J'ai testé cela en sshing d'une machine Ubuntu à une autre (exécutant bash 4.3.11) et sur une machine Arch, en sshing comme indiqué ci-dessus (bash version 4.4.5).
Que se passe t-il ici? Pourquoi l'exportation d'une variable à l'intérieur d'un bash -cappel produit-elle cette sortie?
export, j'essaie de comprendre ce qui se passe. Je vais modifier pour préciser que cela ne se produit que lors de l'exportation.
exportexécution seule? Que je n'avais pas compris.
foo=barn'apparaît pas dans la liste.
export. Zsh fait la même chose.