Конечно, вы можете задать переменную окружения внутри команды, но вам нужно быть осторожным с цитатами: помните, что ваша оболочка будет разобрать вашу локальную командную строку, а затем удаленная оболочка начнет работать со строкой, которую она получит.
Если вы хотите, чтобы переменная получала на сервере то же значение, что и на клиенте, попробуйте опцию SendEnv:
ssh -o SendEnv=MYVAR server.example.com mycommand
Это требует поддержки со стороны сервера. В OpenSSH имя переменной должно быть авторизовано в /etc/sshd_config.
Если сервер разрешает только определенные имена переменных, вы можете работать с этим; например, общая настройка разрешает LC_* сквозной, и вы можете сделать следующее:
ssh -o SendEnv=LC\_MYVAR server.example.com 'MYVAR=$LC\_MYVAR; unset LC\_MYVAR; export MYVAR; mycommand'
Если даже LC_* не является опцией, вы можете передать информацию в переменной окружения TERM, которая всегда копируется (однако, может быть ограничение по длине). Вам все равно придется убедиться, что удаленная оболочка не ограничивает переменную TERM для обозначения известного типа терминала. Передайте опцию -t ssh, если вы не запускаете удаленную интерактивную оболочку.
env TERM="extra information:$TERM" ssh -t server.example.com 'MYVAR=${TERM%:\*}; TERM=${TERM##\*:}; export MYVAR; mycommand'
Другая возможность - определить переменную непосредственно в команде:
ssh -t server.example.com 'export MYVAR="extra information"; mycommand'
Таким образом, если вы передаете локальную переменную:
ssh -t server.example.com 'export MYVAR='"'$LOCALVAR'"'; mycommand'
Однако, остерегайтесь проблем с кавычками: значение переменной будет интерполировано непосредственно в фрагмент оболочки, выполняемый на удаленной стороне. Последний пример выше предполагает, что $LOCALVAR не содержит ни одной кавычки (').