Как сделать так, чтобы заголовок терминала прикреплялся на Mac

Я не уверен, является ли это проблемой с моим Mac, с которой я нуб, или это настройка сервера, на который я захожу.

Что я делаю, так это:

  1. Откройте новое окно в терминале
  2. SSH на сервер CentOS. Мой логин оболочки bash.
  3. Нажмите на Shell-> Изменить заголовок
  4. Измените заголовок и заголовок вкладки на abc123. Это отображается в строке заголовка терминала как abc123-abc123-ssh-100x24
  5. В терминале запустите 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,

Другие вопросы по тегам