首页 > 系统相关 >修复 Docker Ubuntu 容器中 Tab 自动补全与上下键历史命令失效问题

修复 Docker Ubuntu 容器中 Tab 自动补全与上下键历史命令失效问题

时间:2024-11-30 11:32:27浏览次数:7  
标签:completion shell 补全 dash sh Tab Ubuntu bash

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 重启并验证

重启你的容器来检验配置是否生效

标签:completion,shell,补全,dash,sh,Tab,Ubuntu,bash
From: https://www.cnblogs.com/Zheng-Bicheng/p/18578209

相关文章

  • Ubuntu18.04不安装任何软件连接远程VNC桌面
    前言全局说明Ubuntu18.04默认提供了VNC方式的远程桌面连接,如果想要Winmstac远程方式连接桌面,就要按照xrdp等软件安装xrdp教程:https://www.cnblogs.com/wutou/p/18573626一、说明环境:Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMP......
  • vxe-table 树形表格的用法详解
    vxe-table树形表格的使用,支持多种数据结构,可以是带有父子结构的数组,也可以带有层级结构的嵌套数据。官网:https://vxetable.cnGitee带有父子结构的平级数据只需要带有父子结构的平级数据,例如:id和parentId,字段名可以任意设置。对于保存到数据库的平级数据非常方便,无需转换就......
  • Ubuntu18.04安装php7.3
    1、安装依赖sudoaptupdatesudoapt-yinstallgccsudoapt-yinstallmakesudoapt-yinstallopensslsudoapt-yinstallcurlsudoapt-yinstalllibbz2-devsudoapt-yinstalllibxml2-devsudoapt-yinstalllibjpeg-devsudoapt-yinstalllibpng-devsu......
  • 怎么让table的thead 不动,tbody出现滚动条呢?
    要让table的thead固定不动,tbody出现滚动条,你需要使用CSS来控制表格的布局和样式。以下是一种常见且有效的方法:<!DOCTYPEhtml><html><head><style>table{width:100%;table-layout:fixed;/*重要:固定表格布局*/border-collapse:collapse;/*可选:合并表......
  • 用什么代替html5中不再支持table的cellspacing和cellpadding属性?
    在HTML5中,cellspacing和cellpadding属性确实不再被支持。要用CSS来实现相同的效果,主要依靠border-spacing和padding属性。1.cellspacing的替代方案:border-spacingcellspacing控制表格单元格之间的间距。在CSS中,可以使用border-spacing属性应用于<table>元素......
  • table由哪几部分组成?
    在前端开发中,一个HTML<table>元素由以下几个部分组成:<table>元素本身:这是整个表格的容器,所有其他表格元素都包含在其中。<caption>元素(可选):表格的标题,用于描述表格的内容,通常显示在表格的上方。<thead>元素(可选):表格的头部,通常包含表头行。<tr>元......
  • Windows mstsc 远程桌面链接 ubuntu 18.04 远程图形桌面
    前言全局说明通常情况下,管理Ubuntu服务器都是用命令行界面,但某些时候,可能会用到图形界面。2204安装方法:https://www.cnblogs.com/wutou/p/18430133命令行安装图形界面:https://www.cnblogs.com/wutou/p/18572907一、说明环境:Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150......
  • ubuntu18.04安装xrdp后虚拟机桌面能登录不能点击,界面假死
    前言全局说明ubuntu18.04安装xrdp后虚拟机桌面不能点击,界面假死查看xrdp安装过程中,有些卸载后要更新的文件没有安装上导致桌面失效一、说明环境:Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMPWedMay2400:51:42UTC2023x86_64x86_......
  • QTableView的在PySide6中的使用
    importsysfromPySide6importQtCore,QtWidgetsfromPySide6.QtCoreimportQAbstractTableModel,QtfromPySide6.QtWidgetsimportQApplication,QMainWindow,QWidgetimportpandasaspdfromui_tableviewimportUi_FormclassDataFrameModel(QAbstractTableMod......
  • Navicat-navicat15连接PG15数据库报错“字段“datlastsysoid“不存在LINE 1: SELECT D
    报错信息:错误:字段“datlastsysoid“不存在LINE1:SELECTDISTINCTdatlastsysoidFROMpgdatabase根因:Postgres15从pg_database表中删除了datlastsysoid字段引发此错误。解决方案:修改libcc.dll文件1、用在线工具hexed.it打开libcc.dll文件地址:https://hexed.it/如......