Невозможно устранить ошибку после изменения trap в .profile на macOS

#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 установки устранило проблему. Я не знаю, почему это имеет значение.