防止退出 ssh 会话时清除屏幕

jay*_*ren 7 ssh zsh

我已将 rdist 设置为将我的一些 dot 文件推送到我需要 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文件似乎不起作用。

max*_*zig 7

Zsh 在 RHEL 7 上的行为方式相同,即在 ssh 注销期间终端被清除。

(根据终端,最后一个终端输出会丢失,或者只是滚出视图。)

这是因为/etc/zlogout- 这是 zsh 包的一部分 - 包含:

clear
Run Code Online (Sandbox Code Playgroud)

(它不包含其他命令)

您可以.zlogout通过/etc/zlogout在注销期间完全禁用读取来覆盖您自己的文件中的此清除:

$ cat ~/.zlogout
setopt norcs
Run Code Online (Sandbox Code Playgroud)

禁用 rcs 选项会禁用某些运行控制文件的来源 - 可能因此得名:no Run Control Sourcing

  • 您还可以在`~/.zlogout`中使用`aliasclear=""`,尽管我认为您的解决方案更干净。 (3认同)