将以下命令添加到我的~/.tcshrc
:
echo "\033]0;${PROJECT_NAME}\007"
less
新打开的命令停止gnome-terminal
正常工作。但more
命令不受影响。
这是我在尝试运行less
命令时看到的内容:
less log
ESC]0;MYPROJ^G
log (END)
答案1
您less
可能配置为通过管道lesspipe
或类似的脚本传输其输出。如果设置了环境变量LESSOPEN
和/或LESSCLOSE
,或者在文件中使用了等效设置,则会发生这种情况~/.lesskey
。您的输出~/.tcshrc
与管道数据混合并导致混乱。
您~/.tcshrc
显然在为没有 TTY 的 shell 执行时也运行您添加的命令。这会导致您遇到的问题,并且还可能导致scp
或rsync
许多其他命令出现问题。如果要将生成屏幕输出的命令添加到您的.tcshrc
或类似的 shell 启动脚本中,则应始终使该命令有条件,以便它仅在交互式和/或具有 TTY 的会话上运行。
解决此问题的最简单方法是将您的任何输出限制~/.tcshrc
为交互的仅 shell 会话。即会显示 shell 提示符的。您可以通过使输出有条件来实现,即将添加的单行替换.tcshrc
为:
if ($?prompt) then
echo "\033]0;${PROJECT_NAME}\007"
fi
在设置任何自定义提示之前添加此内容。
另一种方法是先静默测试 TTY 的有效性:
tty -s && echo "\033]0;${PROJECT_NAME}\007"