web服务器 技术随笔

Docker 容器里上下左右键变 ^[[A^[[B 乱码的解决办法

在 Docker 容器里执行命令时,想用上下方向键调出历史命令,结果却出现乱码 ^[[A ^[[B ^[[C ^[[D,方向键完全不可用。

一、原因

多数精简镜像默认的 shell 是 sh(如 dash、Alpine 的 ash),而不是 bash。方向键的历史 / 行编辑功能由 bash 的 readline 提供,sh 不解析这些转义序列,于是原样打印成 ^[[A 之类的控制字符。

二、解决办法

1. 临时切换(最常用)

直接在容器内输入:

bash

回车后即进入 bash,上下左右键恢复正常。若提示 bash: not found,说明镜像没装 bash。

2. 给容器换默认 shell(永久)

chsh 把登录 shell 改为 /bin/bash;或在 docker run / docker-compose 中显式指定命令:

docker run -it your-image /bin/bash

3. 镜像里安装 bash

# Debian/Ubuntu
apt-get update && apt-get install -y bash
# Alpine
apk add bash

三、WSL 环境

在 WSL / WSL2 里遇到同样问题,同样是默认 shell 不是 bash,输入 bash 即可,或用 chsh -s /bin/bash 设为默认。

标签
DockerLinux终端