Natürlich können Sie die Umgebungsvariable innerhalb des Befehls festlegen, aber Sie müssen vorsichtig sein, wenn Sie Anführungszeichen setzen: Denken Sie daran, dass Ihre Shell Ihre lokale Befehlszeile parsen wird, und dann wird die Remote-Shell die Zeichenfolge durchgehen erhält.
Wenn Sie möchten, dass eine Variable auf dem Server denselben Wert erhält wie auf dem Client, probieren Sie die folgende SendEnv
Option aus:
ssh -o SendEnv = MYVAR server.example.com mycommand
Dies erfordert jedoch Unterstützung vom Server. Bei OpenSSH muss der Variablenname in autorisiert werden /etc/sshd_config
.
Wenn der Server nur bestimmte Variablennamen zulässt, können Sie das umgehen. Ein allgemeines Setup ermöglicht beispielsweise LC_*
Folgendes:
ssh -o SendEnv = LC_MYVAR server.example.com 'MYVAR = $ LC_MYVAR; nicht gesetzt LC_MYVAR; Export MYVAR; mycommand '
Wenn gerade LC_*
keine Option ist, können Sie Informationen in der TERM
Umgebungsvariablen übergeben, die immer kopiert wird (es kann jedoch eine Längenbeschränkung geben). Sie müssen weiterhin sicherstellen, dass die Remote-Shell die TERM
Variable nicht einschränkt , um einen bekannten Terminaltyp zu bestimmen. -t
Übergeben Sie die Option an ssh, wenn Sie keine interaktive Remote-Shell starten.
env TERM = "zusätzliche Informationen: $ TERM" ssh -t server.example.com 'MYVAR = $ {TERM%: *}; TERM = $ {TERM ## *:}; Export MYVAR; mycommand '
Eine andere Möglichkeit besteht darin, die Variable direkt im Befehl zu definieren:
ssh -t server.example.com 'export MYVAR = "zusätzliche Informationen"; mycommand '
Wenn Sie also eine lokale Variable übergeben, gilt Folgendes:
ssh -t server.example.com 'export MYVAR =' "'$ LOCALVAR'" '; mycommand '
Achten Sie jedoch auf Anführungszeichen: Der Wert der Variablen wird direkt in das Shell-Snippet interpoliert, das auf der Remote-Seite ausgeführt wird. Das letzte Beispiel oben geht davon aus, dass $LOCALVAR
keine einfachen Anführungszeichen ( '
) enthalten sind.