Я пытаюсь вызвать следующую команду после "ssh somehost":export PROMPT_COMMAND='echo -ne "\033]0;$HOSTNAME\007"'
ничего не работает, есть предложения?
Я не думаю, что это можно сделать.
Прежде всего я должен был переписать вашу команду; хотя это аннулируется тем фактом (см. далее), что то, что вы хотите получить, не может быть достигнуто, тем не менее, способ сделать это представляет некоторый интерес и общность, поэтому я буду обсуждать это. Я должен был изменить вашу команду на
ssh me@remote 'COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\""); export PROMPT_COMMAND=${COLOR[@]}'
Причина в том, что необходимо запретить локальной оболочке подставлять $HOSTANME
его local
значение, поэтому то, что мы передаем на удаленный сервер, должно быть заключено в одинарные кавычки ». Для этого , чтобы работать, не должно быть никаких одинарные кавычки внутри команды , чтобы пройти, так что мне пришлось переписать его таким образом , что одинарные кавычки появляются в его команды будет выполняться удаленно. Мне удалось сделать это с массивом, COLOR
. Команда
COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\"") export PROMPT_COMMAND=${COLOR[@]}
локально работает нормально (выбор цветов мой).
Существует два способа экспорта переменных среды через 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
очень осторожен, не позволяя удаленному пользователю изменять глобальные переменные среды.