Que fait «script / dev / null»?

21

Chaque fois que je me connecte à une machine virtuelle avec root, sudans un compte d'utilisateur et que j'essaie de l'utiliser screen, une erreur se produit:

Cannot open your terminal '/dev/pts/0' - please check.

Un message Stack Overflow a déclaré que je devais utiliser script /dev/nullpour le réparer, et cela fonctionne, mais cela n'explique toujours pas pourquoi je dois taper script /dev/null. Je voudrais comprendre ce qu'il fait et pourquoi je dois le saisir.

CJL
la source
2
> Un message Stack Overflow a dit - il pourrait être utile si vous ajoutez également un lien vers ce message, peut-être dans un commentaire.
törzsmókus
Il aurait pu s'agir de stackoverflow.com/a/44244425/340790 , par exemple.
JdeBP

Réponses:

27

Vous ne pouvez pas l'ouvrir /dev/pts/0car il appartient à root, et après avoir su-ed dans un autre utilisateur, vous ne pouvez plus l'ouvrir via son chemin, mais vous pouvez toujours l'utiliser via le handle ouvert, qui a été hérité du processus parent.

script /dev/null va créer un autre pty, appartenant à l'utilisateur actuel.

Quoi qu'il en soit, ce bogue / limitation semble avoir été corrigé dans les versions récentes de screen(par exemple, 4.99.0), qui enverra correctement la poignée au terminal actuel via le SCM_RIGHTSmessage auxiliaire sur une socket de domaine Unix, au lieu d'envoyer simplement le nom de le terminal et que le screenserveur essaie de l'ouvrir (et échoue). Même chose avec tmux.

mosvy
la source