每次我使用 rootsu
用户帐户登录虚拟机并尝试使用screen
它时,都会抛出错误:
Cannot open your terminal '/dev/pts/0' - please check.
Stack Overflow 上的一篇文章说我需要使用script /dev/null
来修复它,并且它有效,但它仍然没有解释为什么我需要输入script /dev/null
.我想了解它的作用以及为什么我需要输入它。
答案1
您无法打开它,/dev/pts/0
因为它归 root 所有,并且在您 su-ed 进入另一个用户后,您将无法再通过其路径打开它,但您仍然可以通过打开的句柄使用它,该句柄是继承的来自父进程。
script /dev/null
将创建另一个 pty,由当前用户拥有。
无论如何,该错误/限制似乎已在最新版本screen
(例如 4.99.0)中得到修复,它将通过 unix 域套接字上的辅助消息正确地将句柄发送到当前终端SCM_RIGHTS
,而不是仅发送名称终端并让screen
服务器尝试打开它(但失败)。同样的事情与tmux
.