linux bash:__vte_prompt_command:未找到命令

xkftehaa  于 2023-05-06  发布在  Linux
关注(0)|答案(6)|浏览(560)
bash: __vte_prompt_command: command not found

每当我打开一个终端,我都会看到这行代码。此外,每次我在终端中输入命令时,都会打印出此信息。
我是一个linux-noob,如果有人能给我一些资源,或者暗示一个可能的解决方案,我很乐意阅读。我试着用谷歌搜索,但无法找到任何有用的结果。
我没有做任何具体的事情,只是在这个开始弹出。
提前感谢:)

附加信息:

  • 我使用的终端是默认的gnome-terminal
  • Fedora 20
lawou6xi

lawou6xi1#

这听起来像是一个名为VTE的程序设置了bash环境变量PROMPT_COMMAND来调用一个名为__vte_prompt_command的函数。
PROMPT_COMMAND环境变量定义了一个命令,该命令在屏幕上显示每个新提示符之前执行。当这个命令产生意外的输出时,可能会非常令人讨厌。
您可以通过在终端中输入以下命令暂时摆脱烦人的消息:

__vte_prompt_command() { true; }

这将创建一个什么都不做的伪函数-您可以通过查看此命令的输出来确认:

type __vte_prompt_command

在我的系统中应用hack后,我看到了这个:

__vte_prompt_command is a function
__vte_prompt_command ()
{
    true
}

但是,这表明VTE可能未正确安装和/或可能损坏。如果可能,您可能要尝试重新安装VTE。我不建议将此永久放入您的~/.bashrc文件中。

yc0p9oo0

yc0p9oo02#

我用默认的gnome-terminal运行Ubuntu 18.04,遇到了同样的问题,但想要一个明确的解决方案。
在尝试了之前建议的解决方案后,我仍然得到了这样的消息:
__vte_prompt_command: command not found
在启动新终端和每个命令终止后启动。
我在例如.bashrc.profile中搜索了一个文件,它将执行source /etc/profile.d/vte-2.91.sh,但没有运气。
我记得很久以前我在~/.bashrc中添加了以下行:

export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"

以便将命令行历史附加到所有打开的终端。我发现评论它解决了问题。

#export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"


$ source ~/.bashrc
我想我会把这个分享给任何有同样问题的人。

zdwk9cvp

zdwk9cvp3#

您可以通过使用sudo gedit ~/.bashrc编辑~/.bashrc,使用STRG+F搜索字符串**“vte”**,并使用#注解该行来禁用相应的代码。在我的系统上,这行看起来像这样,我猜是Ubuntu Budgie的旧安装放在那里的:

if [ $TILIX_ID ] || [ $VTE_VERSION ] ; then source /etc/profile.d/vte.sh; fi # Ubuntu Budgie END

如果它看起来像这样,终端中的行将不再出现:

#if [ $TILIX_ID ] || [ $VTE_VERSION ] ; then source /etc/profile.d/vte.sh; fi # Ubuntu Budgie END
3zwtqj6y

3zwtqj6y4#

我也在讨论这个问题。为了诊断它,我使用ag查找系统中包含__vte_prompt_command的文件:

> sudo ag -l __vte_prompt_command 2>/dev/null /

出现的第一个结果是/etc/profile.d/vte-2.91.sh。查看该文件,我看到如果终端没有按照预期命名,则会提前退出:

# TERM not supported?
case "$TERM" in
    xterm*|vte*|gnome*) :;;
    *) return 0 ;;
esac

在我的例子中,我认为这是解释:
1.当我打开终端时,TERM被设置为xterm-256colorvte-2.91.sh将执行,__vte_prompt_command将被定义,PROMPT_COMMAND将被设置。
1.我会启动一个tmux会话。Tmux会将TERM设置为'screen'vte-2.91.sh将执行,但由于$TERM已更改,脚本将提前退出。__vte_prompt_command不会被定义。
1.我的shell配置将执行PROMPT_COMMAND,调用__vte_prompt_command,这是没有设置的,因此出现了错误消息。
显然vte-2.91.sh有某种问题。但是我通过配置tmux来解决这个问题,将TERM设置为vte所期望的内容:

set -g default-terminal "xterm-256color"

这一切都有点复杂,但我怀疑你的情况有类似的解释。

cwtwac6a

cwtwac6a5#

对于CentOS7(64位):
尝试使用yum命令安装。

sudo yum update -y
sudo yum install -y terminator
sudo yum install -y epel-release
sudo yum install -y terminator #again

重新绘制命令提示符终端,这对我有效(:
参考:http://bytefreaks.net/gnulinux/install-terminator-in-centos-7-64bit

wwtsj6pe

wwtsj6pe6#

set +v

我想你可能会以某种方式:set -v(读取时打印shell输入行。)

so set i

相关问题