Як змусити OS X повернути заголовок термінала до початкового заголовка, коли повертається з ssh?


12

Починаючи з OS X, я сш в foo (вікно Linux). Назва мого терміналу змінюється на foo. Потім я ssh в бар (інше поле Linux). Назва мого терміналу змінюється на бар. Я виходжу з бару. Назва мого терміналу змінюється на foo. Я виходжу з foo. Назва мого терміналу залишається foo (замість того, щоб повертатися до початкового заголовка). Очевидно, що проблема не в терміналі, оскільки вона працює правильно при виході з вікна Linux назад у вікно Linux. Це, мабуть, не ssh, оскільки у мене однакова проблема з vim. По-моєму, що залишає оболонку. Я використовую BASH. Переглядаючи навколишнє середовище, я не бачу великої різниці між вікном Linux та моєю вікною OS X. Обидва використовують термін xterm.

Відповіді:


14

Додавання

export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'

до моєї .bash_profileвиправленої проблеми.

Схоже, що рядок у PROMPT_COMMANDвиконанні виконується кожного разу, коли відображається запит. На чоловіковій сторінці:

PROMPT_COMMAND

Якщо встановлено, значення виконується як команда перед видачею кожного первинного запиту.


3
Ви навряд чи увійдете в OS X через консоль, але це може статися. Щоб запобігти проблемам у цьому випадку, я завершу все це у формі case "$TERM" in xterm*|rxvt*)угоди. Я думаю, що спочатку я взяв ідею звідси: tldp.org/HOWTO/Bash-Prompt-HOWTO/…
Telemachus

Так само, я вважаю, що краще зайти в налаштування Terminal.app (Налаштування -> Налаштування -> Вікно) і видалити все, що він намагається додати до рядка заголовка, але ymmv.
Telemachus

Ну, я iTerm.appне використовую Terminal.app, і це працює. У вас є пункт про реальний термінал. Мій скринька Linux має саме таку перевірку, тому я додам його до свого профілю, дякую.
Час. Оуенс

0

Я знайшов кращий варіант вирішення цього питання. OSX використовує цю системну конфігурацію:

PROMPT_COMMAND="update_terminal_cwd${PROMPT_COMMAND:+; $PROMPT_COMMAND}"

Функція update_terminal_cmdоголошена в /etc/bashrc_Apple_Terminal. Тому, якщо ви не хочете порушувати налаштування терміналу шляхом скидання PROMPT_COMMAND, ви можете додати ці рядки до кінця ~/.profileабо ~/.bashrc:

my_update_terminal_cwd() {
    update_terminal_cwd # call system wide function
    printf '\e]0;\a'    # reset additional title after SSH session
}

PROMPT_COMMAND="my_update_terminal_cwd${PROMPT_COMMAND:+; $PROMPT_COMMAND}"

Приклад:

Перед сеансом SSH

Виконується сеанс SSH - заголовок встановлюється на віддалене ім'я хоста

Після сеансу SSH - заголовок виправлений

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.