我想知道其他人是否经历过这个问题(在下面的粗体中)和/或找到了一个解决办法:in macOS (我尝试过提供终端访问的任何版本,所以我假设OS X在up上;在任何硬件上),一个终端或iTerm2窗口被命名为活动的顶级进程,直到它结束或者退出它。所有有终端接入的系统的预期行为,对吗?
在终端中使用SSH或在iTerm2上使用macOS时,远程计算机的名称将填充窗口的顶部。也是意料之中。当您退出SSH会话时,出现了意想不到的,并且您已进入的远程计算机的名称在窗口横幅中仍然存在;在当前顶级运行过程的窗口横幅中没有更多的可见性,除非关闭窗口(失去对命令历史的一些访问权限),然后打开一个新窗口。
在任何其他操作系统中,我从未见过在终端窗口的旗帜上出现这种进程卡住的行为;Linux发行版上的各种形式的终端退出SSH,回到显示顶级运行进程的良好状态,像Windows中的CMD或PowerShell一样。macOS是怎么回事,为什么这种行为从来没有被处理过,至少就我有限的DuckDuckGo-fu (或!G-fu)所能找到的而言是这样吗?
还有其他人经历过吗?
有识之士欢迎。谢谢!
发布于 2021-03-26 21:01:39
没有“进程棒”正在进行。
让我们在这里谈几件事。
首先请注意..。“外壳”!=“终端”,如果你认为是的话,你就错了。
你说:
在终端中使用SSH或在iTerm2上使用macOS时,远程计算机的名称将填充窗口的顶部。
是的,如果远程外壳设置终端窗口标题。通常在提示符下。有时在外壳初始化rc文件。使用ksh,您甚至可以看到人们重载诸如cd(1)这样的东西,这有点傻。
然后你说:
当您退出SSH会话时,当您退出SSH会话时,出现意外的情况,并且您在窗口横幅中保存了SSH‘入的远程计算机的名称。
因为远程shell设置了终端窗口的标题,并且本地shell在恢复控制时不会重置它。
最后:
macOS是怎么回事,为什么这种行为从来没有被处理过,至少就我有限的DuckDuckGo-fu (或!G-fu)所能找到的而言是这样吗?
如果您希望使用任何shell来执行某些操作,请将其配置为执行该操作。否则,它就不会那么做了。没什么可说的..。它没坏。
对于macOS,ksh的默认init根本不设置任何提示,对于zsh,所设置的只是用户名、机器名和当前$PWD,而bash是相同的。它们中没有一个设置终端窗口标题。
似乎很明显发生了什么。
所以。如果您希望终端窗口标题反映此信息:
看来你已经处理了第二个,所以修复第一个。大多数人都是通过向shell提示符中添加控制代码,从而尽可能可靠地更改窗口来实现的。
您可能会发现本参考很有用。
https://stackoverflow.com/questions/66069822
复制相似问题