Oczywiście, możesz ustawić zmienną środowiskową wewnątrz polecenia, jednakże będziesz musiał uważać na cytowanie: pamiętaj, że twoja powłoka będzie parsować twój lokalny wiersz poleceń, a następnie zdalna powłoka będzie się posługiwać łańcuchem, który otrzyma.
Jeśli chcesz, by zmienna miała taką samą wartość na serwerze jak na kliencie, spróbuj opcji SendEnv:
ssh -o SendEnv=MYVAR server.example.com mycommand
Wymaga to jednak wsparcia ze strony serwera. W OpenSSH, nazwa zmiennej musi być autoryzowana w /etc/sshd_config.
Jeśli serwer zezwala tylko na pewne określone nazwy zmiennych, możesz to obejść; na przykład wspólna konfiguracja pozwala na LC_* i możesz zrobić co następuje:
ssh -o SendEnv=LC\_MYVAR server.example.com 'MYVAR=$LC\_MYVAR; unset LC\_MYVAR; export MYVAR; mycommand'
Jeśli nawet LC_* nie jest opcją, możesz przekazać informacje w zmiennej środowiskowej TERM, która jest zawsze kopiowana (może jednak istnieć limit długości). Nadal będziesz musiał się upewnić, że zdalna powłoka nie ogranicza zmiennej TERM do oznaczania znanego typu terminala. Przekaż opcję -t do ssh jeśli nie uruchamiasz zdalnej powłoki interaktywnej.
env TERM="extra information:$TERM" ssh -t server.example.com 'MYVAR=${TERM%:\*}; TERM=${TERM##\*:}; export MYVAR; mycommand'
Inną możliwością jest zdefiniowanie zmiennej bezpośrednio w poleceniu:
ssh -t server.example.com 'export MYVAR="extra information"; mycommand'
W ten sposób, jeśli przekazujemy zmienną lokalną:
ssh -t server.example.com 'export MYVAR='"'$LOCALVAR'"'; mycommand'
Należy jednak uważać na problemy z cytowaniem: wartość zmiennej będzie interpolowana bezpośrednio do snippetu powłoki wykonywanego po stronie zdalnej. Ostatni przykład powyżej zakłada, że $LOCALVAR nie zawiera żadnych pojedynczych cudzysłowów (').