user1> ssh user2@server2 '$env'
Вам не хватает $
в вашем первом примере запуска команды ssh... если вы действительно вводили ssh user2@server2 "env"
, тогда "env"
останется литеральной строкой и не будет расширяться ни в какие переменные среды.
Если вы хотите, чтобы user2выполнял команду, используя переменные среды user2, вам нужно передать строку, которая при запуске будет расширяться в эти переменные.Например:
user1> ssh user2@server2 'echo $PATH'
Будет эхо user2PATH
на терминал.
Однако вам также необходимо знать, что когда вы запускаете команду через ssh, ~/.profile
незапускается заранее (см. обсуждение здесь) . Итак, если вы хотите получить доступ к переменным среды, определенным в ~/.profile
, выполните следующее:
user1> ssh user2@server2 'source ~/.profile; $env'
ПРЕДУПРЕЖДЕНИЕ: если вы используете двойные кавычки ("
) вместо одинарных кавычки ('
), то оболочка, запущенная user1, расширит любые переменные среды внутри двойных кавычек до user1переменных среды beforeкоманда когда-либо отправляется через ssh пользователю user2.