Por supuesto, puede establecer la variable de entorno dentro del comando, sin embargo, tendrá que tener cuidado al citar: recuerde que su shell analizará su línea de comando local, y luego el shell remoto tendrá que ir a la cadena. recibe.
Si desea que una variable obtenga el mismo valor en el servidor que tiene en el cliente, pruebe la SendEnv
opción:
ssh -o SendEnv = MYVAR server.example.com mycommand
Sin embargo, esto requiere soporte del servidor. Con OpenSSH, se debe autorizar el nombre de la variable /etc/sshd_config
.
Si el servidor solo permite ciertos nombres de variables específicas, puede evitarlo; por ejemplo, una configuración común permite LC_*
, y puede hacer lo siguiente:
ssh -o SendEnv = LC_MYVAR server.example.com 'MYVAR = $ LC_MYVAR; desarmado LC_MYVAR; exportar MYVAR; mycommand '
Si incluso LC_*
no es una opción, puede pasar información en la TERM
variable de entorno, que siempre se copia (sin embargo, puede haber un límite de longitud). Todavía tendrá que asegurarse de que el shell remoto no restrinja la TERM
variable para designar un tipo de terminal conocido. Pase la -t
opción a ssh si no está iniciando un shell interactivo remoto.
env TERM = "información adicional: $ TERM" ssh -t server.example.com 'MYVAR = $ {TERM%: *}; PLAZO = $ {PLAZO ## *:}; exportar MYVAR; mycommand '
Otra posibilidad es definir la variable directamente en el comando:
ssh -t server.example.com 'export MYVAR = "información adicional"; mycommand '
Por lo tanto, si pasa una variable local:
ssh -t server.example.com 'export MYVAR =' "'$ LOCALVAR'" '; mycommand '
Sin embargo, tenga cuidado con los problemas de citas: el valor de la variable se interpolará directamente en el fragmento de shell ejecutado en el lado remoto. El último ejemplo anterior supone que $LOCALVAR
no contiene comillas simples ( '
).