每次终端尺寸发生变化时,通常bash
会resize
自动正确地重新计算LINES
和。COLUMNS
但由于某种原因,这在交互式运行的 Docker 容器中不起作用bash
。
我shopt checkwinsize -s
在bashrc
Docker 容器中(并验证它正在on
使用shopt
)。与主机bash
会话相同。
我真的没主意了;这是我发现的在调整窗口大小时自动评估的shopt checkwinsize -s
唯一方法。bash
resize
答案1
如果你的 shell 被 su 为 root,Docker 可能无法成功向它发送信号,因为这跨越了权限边界。 (这不仅仅是 Docker 的问题)。
进一步阅读:
- SIGWINCH 附加进程 #5736,提到了这个
su
问题。 - SIGBJD
- Docker附加到curses进程