1 简介
在使用Docker容器运行Ubuntu系统时,有时会遇到Tab键自动补全和上下键历史命令失效的问题。这通常是由于终端模拟器的设置不当引起的。
2 解决方案
2.1 安装 bash-complete
bash-completion
是一个增强的命令补全工具,能够为许多常用的命令提供智能补全。这在复杂的命令行操作中尤其有用,减少了错误输入的概率并提高了效率。这个包提供了许多常见命令的补全功能,如果缺少这个包,即使使用 bash
也无法实现完整的补全。因此我们要确保 bash-completion
包已安装。
# 安装 bash-completion 包
apt-get update && apt-get install -y bash-completion
2.2 更改 shell 的解释器更改为 bash
Ubuntu 的默认 shell 是 dash
,一个轻量级的 POSIX 兼容 shell。然而,它不支持我们日常使用中常见的自动补全和命令历史功能。我们可以将默认 shell 改为 bash
,以启用这些功能。首先,检查当前 /bin/sh
的符号链接指向:
# 查看 /bin/sh 的当前指向
ls -l /bin/sh
如果输出显示 /bin/sh -> dash
,则说明当前系统使用 dash
作为默认 shell。
接下来,我们将 sh
的默认解释器从 dash
改为 bash
:
# 重新配置 dash,选择 'No' 以使用 bash 作为默认 shell
dpkg-reconfigure dash
在配置过程中,当系统提示 Use dash as the default system shell (/bin/sh)? 时,选择 No
。
2.3 启用 bash_completion
为了使 bash-completion
生效,你需要手动启用它。首先,确保脚本具有执行权限,然后运行脚本:
# 进入 bash-completion 脚本目录
cd /usr/share/bash-completion# 为 bash_completion 脚本添加执行权限
chmod +x bash_completion# 手动运行 bash_completion 脚本
./bash_completion
3 重启并验证
重启你的容器来检验配置是否生效