Considera esto:
$ 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"
¿Por qué la exportación de una variable dentro de un bash -c
plazo de sesión a través de ssh resultado en esa lista de declare -x
comandos (la lista de variables actualmente exportados, por lo que yo puedo decir)?
Ejecutar lo mismo sin el bash -c
no hace eso:
$ ssh localhost 'export foo=bar'
terdon@localhost's password:
$
Tampoco sucede si no lo hacemos export
:
$ ssh localhost bash -c 'foo=bar'
terdon@localhost's password:
$
Probé esto enviando mensajes de una máquina Ubuntu a otra (ambos ejecutando bash 4.3.11) y en una máquina Arch, enviando mensajes a sí mismo como se muestra arriba (versión bash 4.4.5).
¿Que está pasando aqui? ¿Por qué exportar una variable dentro de una bash -c
llamada produce esta salida?
export
, estoy tratando de entender qué está pasando. Lo editaré para aclarar que esto solo ocurre al exportar.
export
correr solo? Eso no lo había entendido.
foo=bar
no aparece en la lista.
export
. Zsh hace lo mismo.