#bash #macos
#bash #macos
Вопрос:
В моем ~/.profile
случае я использую это во FreeBSD 12.0, который отлично работает:
prompt_title_command() {
# use OSC escape sequence to set window/tab title
printf "e]0;${USER}@${HOSTNAME} u2014 ${PWD} u2014 ${BASH_COMMAND}a"
}
trap prompt_title_command DEBUG
Это устанавливает заголовок окна / вкладки. Это символ u2014
em-dash в Юникоде.
Затем я скопировал его и попытался использовать в macOS 10.14.3, но получил бы эти ошибки:
-bash: printf: missing unicode digit for u
-bash: printf: missing unicode digit for u
Несмотря на то, что я получу эту ошибку, символ unicode печатается, как и ожидалось, в названии.
Это происходит только при открытии новой вкладки или окна.
Затем я изменил предыдущий код, чтобы использовать два обычных тире вместо тире в юникоде:
prompt_title_command() {
# use OSC escape sequence to set window/tab title
printf "e]0;${USER}@${HOSTNAME} -- ${PWD} -- ${BASH_COMMAND}a"
}
trap prompt_title_command DEBUG
Но я все еще получаю те же ошибки и не могу избавиться от них, что бы я ни пытался, если не закомментирую trap
строку.
Версии:
- GNU bash, версия 4.4.23 (1) -релиз (amd64-portbld-freebsd12.0)
- GNU bash, версия 4.4.23 (1) -релиз (x86_64-apple-darwin18.0.0)
Эта идея исходит из: https://mg.pov.lt/blog/bash-prompt.html
Ответ №1:
Перемещение ловушки в положение после PS1
установки устранило проблему. Я не знаю, почему это имеет значение.