На страницах руководства моего сервера:
Вам необходимо объявить переменные среды и разрешить их в расположении удаленного сервера / etc / ssh / sshd_config
, включив свойство PermitUserEnvironment как PermitUserEnvironment yes
и установите переменные среды в ~ / .ssh / environment.
Когда вы запускаете команду в качестве аргумента для ssh, команда запускается непосредственно sshd; оболочка не задействована.
Вы можете проверить это, используя что-то вроде следующего:
ssh b @ B pstree
Это оболочка (в данном случае bash), которая извлекает ваш .bash_profile, и только делает это, если оболочка вызывается как оболочка входа в систему или если оболочка была вызвана с параметром --login (см. справочную страницу bash; ищите INVOCATION). Окружение, которое вы получаете при запуске команды напрямую, устанавливается такими вещами, как sshd и PAM, когда вы входите в систему.
Таким образом, если вам нужен ваш .bash_profile, вам нужно запустить его под оболочкой, и вам нужно запустить оболочку как интерактивная оболочка или оболочка входа, например:
ssh b @ B"bash -l -c 'env'"
Это должно дать вам желаемый результат. Единственное, на что следует обратить внимание, это то, что цитирование довольно быстро становится сложным. Обратите внимание, что, по крайней мере, в Linux
ssh b @ B bash -l -c 'env'
не предоставит вам оболочку входа в систему (я не уверен, почему).