Как сделать так, чтобы заголовок терминала прикреплялся на Mac
Я не уверен, является ли это проблемой с моим Mac, с которой я нуб, или это настройка сервера, на который я захожу.
Что я делаю, так это:
- Откройте новое окно в терминале
- SSH на сервер CentOS. Мой логин оболочки bash.
- Нажмите на Shell-> Изменить заголовок
- Измените заголовок и заголовок вкладки на abc123. Это отображается в строке заголовка терминала как abc123-abc123-ssh-100x24
- В терминале запустите sudo su, чтобы изменить пользователя на root. Обратите внимание, что название теперь изменилось на root@blah:/home/myuser-ssh-100x24. Если я выйду из root, название заголовка все равно будет новым.
Как сделать так, чтобы название заголовка оставалось как abc123 и не менялось, когда я su другим пользователям? Заранее спасибо за помощь.
1 ответ
Название устанавливается с сервера, к которому вы подключаетесь. Скорее всего, /etc/bashrc
или аналогичный файл определяет PROMPT_COMMAND
установить заголовок. На CentOS 6 это выглядит так:
if [ -z "$PROMPT_COMMAND" ]; then
case $TERM in
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
else
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
[... more of the same ...]
esac
fi
Чтобы предотвратить это, обязательно установите PROMPT_COMMAND=
в root
и ваши собственные файлы конфигурации bash на сервере, к которому вы подключаетесь по SSH (например, ~/.bashrc
).
Или добавьте PROMPT_COMMAND
в /etc/sudoers
(env_keep
) а также /etc/ssh/sshd_config
(AcceptEnv
) наследовать его от локальной системы и установить для него значение, которое не влияет на строку заголовка.
В этом конкретном случае вы также можете настроить свой Терминал на объявление другого Терминала, так как он установлен только для xterm*
на CentOS (Терминал "Настройки…" Настройки "(Выбрать профиль)" Дополнительно "Объявить терминал как).
Похоже, что Terminal.app не позволяет заблокировать заголовок - вы, вероятно, должны изменить конфигурацию, которая устанавливает его, как описано выше. Вы всегда можете проверить другой терминал, такой как iTerm. Поддерживается сохранение имени профиля в заголовке даже при изменении заголовка.
А вот грязный хак, чтобы сохранить заголовок вашего терминала без изменения конфигурации всех серверов, на которых вы используете SSH:
В той же оболочке, в которую вы вставляете SSH в Linux, перед тем, как сделать это, выполните следующую команду:
while true ; do printf "\033]0;%s\007" "My Terminal Title" ; sleep 1 ; done &
Это выполнит цикл в фоновом режиме, который меняет заголовок терминала на Мой заголовок терминала раз в секунду, отменяя любые изменения, выполненные в вашем сеансе SSH.
Как только вы закончите, используйте управление заданиями в вашей оболочке, чтобы остановить его (jobs
а также kill %1
если это первая работа), или fg
вывести его на передний план и отменить с помощью Ctrl-C
,