每次我打开命令终端或按 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当搜索相同的问题时