在macOS上的.profile中更改陷阱后,无法消除错误

时间:2019-04-12 06:02:25

标签: 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是破折号Unicode字符。

然后我将其复制并尝试在macOS 10.14.3中使用,但会出现以下错误:

-bash: printf: missing unicode digit for \u

-bash: printf: missing unicode digit for \u

即使我会收到此错误,但Unicode字符仍会按标题中的预期进行打印。

这仅在打开新的标签页或窗口时发生。

然后,我将前面的代码更改为使用两个普通破折号而不是unicode em-dash:

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 个答案:

答案 0 :(得分:0)

将陷阱设置为PS1之后,可以解决此问题。我不知道为什么会有所不同。