CJL*_*CJL 21 gnu-screen terminal su pty
每次我使用 rootsu用户登录 VM并尝试使用screen它时都会引发错误:
Cannot open your terminal '/dev/pts/0' - please check.
Run Code Online (Sandbox Code Playgroud)
Stack Overflow 上的一篇帖子说我需要用script /dev/null它来修复它,它可以工作,但它仍然没有解释为什么我需要输入script /dev/null. 我想了解它的作用以及为什么我需要输入它。
mos*_*svy 28
您无法打开/dev/pts/0它,因为它归 root 所有,并且在您进入另一个用户之后,您将无法再通过其路径打开它,但您仍然可以通过它的已打开句柄使用它,该句柄是继承的从父进程。
script /dev/null 将创建另一个由当前用户拥有的 pty。
无论如何,该错误/限制似乎已在screen(例如 4.99.0)的最新版本中得到修复,它将通过SCM_RIGHTSunix 域套接字上的辅助消息正确地将句柄发送到当前终端,而不是仅发送名称终端并让screen服务器尝试打开它(但失败)。与tmux.