Ovviamente, puoi impostare la variabile d'ambiente all'interno del comando, tuttavia dovrai fare attenzione al preventivo: ricorda che la tua shell analizzerà la tua riga di comando locale, e quindi la shell remota proverà sulla stringa riceve.
Se vuoi che una variabile ottenga sul server lo stesso valore che ha sul client, prova l' SendEnv
opzione:
ssh -o SendEnv = MYVAR server.example.com mycommand
Ciò richiede supporto dal server, comunque. Con OpenSSH, il nome della variabile deve essere autorizzato in /etc/sshd_config
.
Se il server consente solo determinati nomi di variabili specifici, è possibile aggirare il problema; ad esempio, una configurazione comune consente LC_*
attraverso, ed è possibile effettuare le seguenti operazioni:
ssh -o SendEnv = LC_MYVAR server.example.com 'MYVAR = $ LC_MYVAR; disinserito LC_MYVAR; esportazione MYVAR; myCommand'
Se even LC_*
non è un'opzione, è possibile passare informazioni nella TERM
variabile d'ambiente, che viene sempre copiata (tuttavia potrebbe esserci un limite di lunghezza). Dovrai comunque assicurarti che la shell remota non limiti la TERM
variabile per designare un tipo di terminale noto. Passare l' -t
opzione a ssh se non si avvia una shell interattiva remota.
env TERM = "informazioni aggiuntive: $ TERM" ssh -t server.example.com 'MYVAR = $ {TERM%: *}; TERM = $ {TERM ## *:}; esportazione MYVAR; myCommand'
Un'altra possibilità è quella di definire la variabile direttamente nel comando:
ssh -t server.example.com 'export MYVAR = "informazioni aggiuntive"; myCommand'
Pertanto, se si passa una variabile locale:
ssh -t server.example.com 'export MYVAR =' "'$ LOCALVAR'" '; myCommand'
Tuttavia, fai attenzione ai problemi di quotazione: il valore della variabile verrà interpolato direttamente nello snippet di shell eseguito sul lato remoto. L'ultimo esempio sopra presuppone che $LOCALVAR
non contenga virgolette singole ( '
).