Date: Thu, 17 Feb 2022 20:37:34 +0000 From: Andy Caldwell <andycaldwell@...rosoft.com> To: "musl@...ts.openwall.com" <musl@...ts.openwall.com> CC: Yuri Kanivetsky <yuri.kanivetsky@...il.com> Subject: RE: [EXTERNAL] Re: What determines the TERM variable value? > On Sun, Feb 13, 2022 at 10:54:23AM +0200, Yuri Kanivetsky wrote: > > I don't think it's configurable in a common sense: > > > > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith > > ub.com%2Fmoby%2Fmoby%2Fblob%2Fv20.10.12%2Fcontainer%2Fcontainer.go%23L > > 752&data=04%7C01%7Candy.caldwell%40microsoft.com%7C15c78d610615484 > > 4ccf808d9eed74d25%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6378034 > > 31376969496%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMz > > IiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=Icw%2BHvFTPaaY0w%2B6 > > VcmyhhXT%2BXhube1WJ0kO5UmC0qk%3D&reserved=0 > > > > Oh bloody hell. All this complexity, and this is the part they choose to make fixed? It makes perfect sense that this is hard-coded. As you say, the TERM variable is the way programs running on the TTY learn what escape codes to use to ask the TTY to do things (change colour, clear the screen, restart a line, etc.) so the TERM is _set by the TTY_. When running a docker container with a TTY attached, the TTY is created by the docker daemon and isn't the TTY that's hosting the docker client binary. This is needed to allow the client to disconnect from the deamon without killing the container, and it also needed for cases where the client and daemon are on separate hosts. The daemon is listening on the master side of the TTY it created then streams data to and from the client (if there is one) which then reads _its_ TERM variable and translates the operations that the container tried to make into the appropriate control codes for the local TTY. Changing the TERM inside the container only makes sense if you also change the TTY handling that the daemon does to match, otherwise the daemon will incorrectly interpret control characters, pass those misinterpretations to the client which will then "correctly" apply the wrong behaviour to the user's console. Awkwardly many TTY termcap control characters are _mostly_ compatible (since they're all based on VT100) so if you misconfigure your TERM things _mostly_ work, then you try to use some TUI-heavy tool (like vim) and some things subtly don't work correctly.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.