bash:__vte_prompt_command:找不到命令

bash:__vte_prompt_command:找不到命令

每次我打开命令终端或按 Enter 键时,都会显示上述错误消息。没有坏处,但非常烦人。

~/.bash_profile 在这里

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs

这是导致 /etc/bashrc 中错误的区域

  if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
      PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
  elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then
      PROMPT_COMMAND="__vte_prompt_command"
  else
      PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
  fi

如果我将此行添加到 ~/.bashrc 问题就解决了

source /etc/profile.d/vte.sh

显然 _vte_prompt_comand 仅在 vte.sh 中定义

__vte_prompt_command() {
  local command=$(HISTTIMEFORMAT= history 1 | sed 's/^ *[0-9]\+ *//')
  command="${command//;/ }"
  local pwd='~'
  [ "$PWD" != "$HOME" ] && pwd=${PWD/#$HOME\//\~\/}
  printf "\033]777;notify;Command completed;%s\007\033]0;%s@%s:%s\007%s" "${command}" "${USER}" "${HOSTNAME%%.*}" "${pwd}" "$(__vte_osc7)"
}

这个命令实际上是做什么的?这些 /etc/profile.d/*.sh 不是在启动时加载的吗?有人可以解释为什么它会这样吗?

答案1

来自 gnome-terminal 3.7.0 变更日志:

为了使终端中打开的新选项卡与当前选项卡具有相同的工作目录,需要终端中运行的 shell 配合。为此,vte 安装一个 bash shell 脚本,您必须在 bash PS1 提示符中使用该脚本。 (...)

我从https://bugzilla.redhat.com/show_bug.cgi?id=924275当搜索相同的问题时

相关内容