4

当我在我的 Linux 控制台上为我输入的每个命令打开 bash -x 时,我都会得到这个输出。

printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

这很烦人,我怎么能把它关掉。

提前致谢

4

4 回答 4

4

此命令输出转义序列以更改终端仿真器的标题。所以我猜它是在你的.bashrcor .bash_profilewhen TERMmatch中配置的xterm*。看看那里并评论代码。

打印命令是因为bash -x将显示调用的每个命令,即使它是打印的一部分$PS1。这就是为什么您可能不想set -x在交互式 shell 中使用,但可能应该将您的代码放在脚本中并set -x在开头和set +x结尾添加(可选,除非您source这样做)。

于 2012-12-21T13:54:57.650 回答
3

问题不是为什么,而是如何解决。在 bash 提示符下键入:

unset PROMPT_COMMAND; PS1='\w> '

现在为什么。command inPROMPT_COMMAND在每个 bash 命令(它设置PS1)之后进行评估,您通常看不到此活动。但有-x你可以。

于 2012-12-21T15:24:11.813 回答
0

这似乎是您的$PROMPT_COMMAND变量在起作用。您可能只想$PS1改用。

http://www.gnu.org/software/bash/manual/bashref.html#index-PPID

于 2012-12-21T15:16:38.733 回答
0

您可以使用set -x打开调试和set +x关闭它。

当您打开调试选项时,BASH 将打印出$P4每一行的值。默认情况下,它是一个简单的+后跟空格。尝试设置PS4='+ '

如果这不起作用,您有一个用于$PROMPT_COMMAND设置提示的 Kornshell 用户。在提示符中显示用户名和目录等有用信息是很常见的。在 BASH 中,您可以使用各种转义序列来做到这一点。例如:

PS1="\u@\h:\w$ "

将替换\u为用户名,\h短主机名,\w当前目录基于$HOME目录,如果用户在$HOME/bin,提示将显示

david@foo-sys:~/bin$ 

如果用户在/usr/bin,提示将是

david!@foo-sys:/usr/bin$

使用 Kornshell,您不能使用这些转义序列。相反,您可以为cd命令设置别名,并使用 cd 函数来设置提示。或者,您使用$(..)语法。我使用 Kornshell,提示符如下所示:

PS1=$(print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")

恶心,不是吗?在 BASH 中,我可以这样做:

PS1="\u@\h:\w\n$ "

无论如何,Kornshell 用户在使用 BASH 时设置$COMMAND_PROMPT变量而不是使用转义序列是很常见的,因为他们知道这样做。而且,当你这样做时,你会看到每次都打印出提示命令。例如,我可以这样设置我的 BASH 提示:

PROMPT_COMMAND="print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ "

当我set -x设置好后,我每次都会看到打印出来的。

你应该做的是进入$HOME/.bash_profile或如果该文件不存在$HOME/.profile,并摆脱设置的行PROMPT_COMMAND。相反,将其更改为:

PS1="\e]0\u@\h:\w\a$ "

这或多或少是相同的提示。如果您不想更改.profileor .bash_profile,那么只需执行以下操作:

$ unset PROMPT_COMMAND
$ PS="\e]0\u@\h:\w\a$ "

另一种可能性:可能是您没有看到在 中设置的提示$HOME/.bash_profile$HOME/.profile甚至$HOME/.bashrc。在这种情况下,您的系统管理员是 Kornshell 人员,他们已在/etc/profile文件中设置了提示。您必须通过在$HOME/.bash_profile文件末尾添加上述两行来自己覆盖文件中的提示设置。

于 2012-12-21T16:50:36.843 回答