问题产生
在使用Xshell连接远端服务器的时候,在进行一些操作的时候,Xshell会在命令行中疯狂输出自己,就像这样:

这个时候八成你的屏幕上面是有一堆乱码的。之前也没一直去理解为什么会这样,现在有空来分析一下这个问题出现的原因和解决办法。
分析过程
首先需要复现一下这个问题。复现的命令很简单cat /dev/urandom | head,这个命令会让Xshell在命令行内输出Xshell。多次运行发现输出的Xshell次数还不一样。
然后我又在windows subsystem for linux里面试了同样的命令好几次,都没有出现异常;在Mac中也一样试了好几次,也没有出现异常。而且结合它的输出来看,这肯定是Xshell自身的设计或者是缺陷了。
而dev下面的urandom是随机生成的,所以从我个人的知识来猜测,应该是某个特殊的控制字符触发了这个“机制”。
验证
既然猜测是特殊控制字符,那干脆把所有的ASCII字符表对应的字符(不管是不是控制字符)全部打印一遍,看看结果就知道了:
1 |
|
编译并且执行之后,还真的会在xshell里出现一次xshell。也就是猜测不错。最后通过不断缩小范围,可以发现这个控制字符是5号字符:

最后我在Xshell的官方用户手册里面找到了答案:

对于ENQ,Xshell的做法是回复它自己的名字。当然你也可以通过配置来进行修改:
