Я не думаю, что это можно сделать.
Прежде всего я должен был переписать вашу команду; хотя это аннулируется тем фактом (см. далее), что то, что вы хотите получить, не может быть достигнуто, тем не менее, способ сделать это представляет некоторый интерес и общность, поэтому я буду обсуждать это. Я должен был изменить вашу команду на
ssh me@remote 'COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\""); export PROMPT_COMMAND=$'
Причина в том, что необходимо предотвратить замену локальной оболочки на $HOSTANME
ее local
значение, поэтому то, что мы передаем на удаленный сервер, должно быть заключено в одинарные кавычки '. Для этого, чтобы работать, не должно быть не одинарные кавычки внутри команды, чтобы пройти, так что мне пришлось переписать его таким образом, что одинарные кавычки появляются в его команды будет выполняться удаленно. Мне удалось сделать это с массивом COLOR
. Команда
COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\"") export PROMPT_COMMAND=$
локально работает нормально (выбор цветов мой).
Существует два способа экспорта переменных среды через ssh. Во-первых, можно изменить переменную AcceptEnv
в /etc/ssh/sshd_config
файле сервера : но в руководстве говорится
AcceptEnv
Определяет, какие переменные окружения, переданные клиентом, будут скопированы в сессию по окружа .
Акцент здесь делается на сессии : никаких глобальных изменений.
Второй способ - через PermitUserEnvironment
переменную:
PermitUserEnvironment
Specifies whether ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys are processed by sshd. The default is "no". Enabling environment processing may enable users to bypass access restrictions in some configurations using mechanisms such as LD_PRELOAD.
Как видите, ssh
очень осторожно, не позволяя удаленному пользователю изменять глобальные переменные среды.