我设置了我的 tcsh xterm 以使用运行的最后一个命令的名称和目录来更新“postcmd”上的标题栏。
这类似于我所拥有的(重现的最小示例):
alias postcmd 'echo -n "\033]0;hello_world\007";'
(请注意,这个别名在我的 .cshrc 文件中。如果我只是在命令行上键入它,那么它可以 100% 正常工作)
这成功地将 xterm 标题栏更新为在我运行的每个命令之后说“hello_world”,除了less
当我运行时less
,我得到以下终端输出:
>less abc.txt
ESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world
^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^G...
(END)
该文件实际上从未打开,它只是打印这个垃圾字符串,我必须CTRL-C
取消它。铃声或转义字符是否以某种方式破坏了 less 的初始化?知道如何修改它以不破坏less
吗?我可以很容易地使用另一个编辑器,但有时我需要与其他工程师共享我的控制台进行调试,如果他们选择运行less
.
这是我正在使用的实际代码,它与简单的 hello_world 示例具有相同的问题:
alias postcmd 'set HIST = `history -h 1`; printf "\033]0;%s\007" "xterm: $HIST @ $cwd ";'
=====编辑===== 一些附加信息:
> alias less
> echo $LESS
LESS: Undefined variable
> echo $TERM
xterm
>less --version
less 382
Copyright (C) 2002 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
>tcsh --version
tcsh 6.13.00 (Astron) 2004-05-19 (x86_64-unknown-linux) options 8b,nls,dl,al,kan,rh,color,dspm,filec
=== 更多编辑 ===
在进一步调试中,我发现问题仅在我将命令放入我的 .cshrc 文件时出现。如果我取消注释 .cshrc 中的别名,并简单地在命令行上键入别名,那么它可以正常工作。
此外,将别名放在我的 .cshrc 中,如果我取消它的别名,即使在取消别名后它仍然会更少中断。因此,问题似乎不是来自别名的存在,而是来自在创建终端时执行 .cshrc 时的别名?