![防止退出 ssh 会话时屏幕被清除](https://linux22.com/image/30547/%E9%98%B2%E6%AD%A2%E9%80%80%E5%87%BA%20ssh%20%E4%BC%9A%E8%AF%9D%E6%97%B6%E5%B1%8F%E5%B9%95%E8%A2%AB%E6%B8%85%E9%99%A4.png)
我设置了 rdist 将一些点文件推送到我需要 ssh 进入的所有远程计算机。我还在所有这些机器上将 zsh 作为默认 shell。
当我 ssh 进入计算机然后退出时,屏幕会被清除。我觉得这种行为很烦人。我试图阻止这种行为是注释掉/usr/bin/clear
我的文件中的行.logout
。然后我将这个更新的文件分发到所有远程计算机。
问题是,这不起作用。我对此不确定,但我认为.logout
是用于 csh 的,但我没有.zlogout
(或.bash_logout
两者都没有)。我的其他点文件(例如, .zshrc
, )中没有任何内容.zshenv
看起来会导致屏幕清除。当我 ssh 进入远程计算机时exec zsh
(为了获得“新鲜”的 shell 会话),退出 ssh 会话时终端将不会清除。但除此之外,问题仍然存在 - 在我连接的任何机器上,退出时屏幕都会清除。
无论如何,当我将远程计算机上的默认 shell 设置为 bash 时,我似乎没有遇到同样的问题。所以我认为问题出在 zsh 上。
我检查了点文件以确保它们得到了正确的分配(他们做到了)。除此之外,我已经没有主意了......为什么退出 ssh 时我的终端不断被清除?
编辑:我找到了问题的根源:/etc/zlogout
许多远程计算机上都有一个文件。我在其中许多机器上没有 sudo 权限,并且我不想全局影响用户;有没有办法覆盖 中的功能/etc/zlogout
?仅仅制作一个$HOME/.zlogout
文件似乎不起作用。
答案1
RHEL 7 上的 Zsh 的行为方式相同,即在 ssh 注销期间,终端被清除。
(根据终端的不同,最后一个终端输出会丢失,或者只是滚动到视图之外。)
这是因为/etc/zlogout
- 它是 zsh 包的一部分 - 包含:
clear
(不包含其他命令)
您可以通过在注销期间.zlogout
完全禁用读取来覆盖您自己的文件中的此清除:/etc/zlogout
$ cat ~/.zlogout
setopt norcs
禁用 rcs 选项禁用某些运行控制文件的来源 - 可能因此而得名:no Run Control Sourcing