Настраивать
Я запускаю screen на локальной машине и использую разные окна screen для подключения к разным хостам. Было бы неплохо автоматически менять имена окон на имена хостов во время процесса ssh.
Подходы
Я попробовал разные варианты двух подходов, представленных ниже:
1) Использование LocalComand
в конфигурационном файле ssh:
Host *
PermitLocalCommand yes
LocalCommand '[ "${TERM:0:6}" == "screen" ] && printf "\ek@%h\e\\"
2) Создание пользовательской функции bash:
# function to set screen name based on host and reset on exit
function ssh() {
echo -e '\033k'@$1'\033\\'
/usr/bin/env ssh -Y "$@"
echo -e '\033k'local'\033\\'
}
Проблема
Оба эти подхода работают, но они также, по-видимому, мешают таким вещам, как автодополнение:
$ scp user@host:~/.s<tab>
...o^[\\\\ ...cal^[\\\\
Вопрос
Есть ли какое-то условие, которое можно было бы использовать (помимо проверки if $TERM == screen
), которое позволило бы выполнить LocalCommand
(или ssh()
функцию) только при подключении к хосту, а не при использовании для автодополнения?