当前位置: 首页 > 知识库问答 >
问题:

bash选项卡完成在centos 8上不起作用

乜业
2023-03-14

我在docker上运行centos 8发行版,我希望使用dnfpackage manager完成bash选项卡。根据其他帖子,我在docker容器启动后做了以下工作:

dnf clean all && rm -r /var/cache/dnf && dnf upgrade -y && dnf update -y

然后

dnf install bash-completion sqlite -y

这样做后,我重新启动容器,但仍然没有bash完成。我还试图通过以下方式直接获取bash完成文件:

source /etc/profile.d/bash_completion.sh

但没有任何更好的效果。

你知道我做错了什么吗?

共有1个答案

方昊阳
2023-03-14

您不需要在Docker容器中完成BASH。您应该手动连接到Linux容器内的shell的唯一时间是解决容器中运行的进程行为异常的原因。事实上,一些容器设计建议甚至可能建议您根本不在基本操作系统中包含shell!

这对您不起作用的原因是Linux容器的操作方式。容器只是一个名称空间的进程,由安装在主机操作系统上的内核管理。无法修改或中断此进程,否则容器将被销毁,因为进程将被发送SIGTERM。当您尝试source时,bash\u完成。shscript,您正试图将新的配置参数传递给Docker管理的现有命名空间进程。

如果您真的想这样做,最好的方法是基于原始CentOS 8基本映像创建一个新的Docker容器映像。然后从那里安装bash完成包,并添加一个echo命令,将源代码行添加到用户的。bashrc文件。

编辑:

关于本答案评论中提出的附加问题,我在下面添加了附加信息。

为什么我不需要容器中的bash完成

您不需要在容器中完成bash的原因是,容器不需要通过shell连接到容器。简单地说,一个实例应该是在特定配置条件下运行的流程的单个实例。容器并不是用来创建供您连接的开发环境,而是用来运行软件基础架构中的流程和应用程序。

手动更新

您提到,启动容器时首先要做的事情之一是安装软件包。这也让我感到震惊,因为您根本不应该手动与容器交互。这包括软件包安装。相反,您应该从旧的基本映像生成一个新的容器映像,并向Dockerfile添加额外的运行语句,以更新系统并安装这些所需的包。

真不敢相信这是不可能的

如果您创建一个新的Dockerfile,有意将其安装在基础映像的新层上,并生成一个新的容器映像供您使用,则这是可能的。但关键是,你不应该一开始就连接到Docker容器,甚至到了需要bash完成之类的东西的地步!

这里有一个关于容器和虚拟机之间区别的很好的总结,可能有助于为您澄清其中的一些区别。简而言之,容器应该运行并且只运行进程。

 类似资料:
  • 我正在使用C#创建PowerShell cmdlet。对于其中一个参数,我使用。 如何使的值出现在制表符完成列表中?

  • 问题内容: 在升级到狮子之前,我已经通过终端在python shell中完成了tab的工作。按照这些说明进行操作,可以使选项卡完成工作。 自从升级到Lion之后,我现在无法在Python的终端会话中完全完成Tab的工作。我已经按照上述指示操作,但仍然无法正常工作。 Lion中的readline模块有区别吗?连接到“ tab:complete”选项似乎不再起作用。我想知道是不是忽略readline的

  • 问题内容: 我开始学习如何使用带Java的Selenium在浏览器中处理多个选项卡。看起来我下面的代码无法正常工作。 请让我知道如何在不使用getWindowHandles()的情况下显示标题“数据策略”。 问题答案: 可以正常工作,但是在调用之前,您必须按照以下步骤诱使 WebDriverwait : 控制台输出:

  • 问题内容: 我在selenium离子中停留了一点 场景是这样的 现在,从那时起,我们必须将重点转移到该新标签上,因为其余的测试将在该新标签上进行。 我写的代码如下 此代码无法正常工作,直到从下拉菜单中单击子菜单为止,并且日志中显示错误 因此,当我尝试运行该测试用例时,它会显示错误 [警告]链接具有目标’_blank’,Selenium不支持该目标! 随机目标为:selenium_blank8441

  • 问题内容: eclipse的自动完成功能现在无法使用,我搜索了几个小时,但找不到解决方案。我已经使用很长时间了,所以即使我已经安装了秋千,打开它之后的第一件事就是要安装SWT和Windows Builder。我的意思是,这可能是由于swt和swing引起的一些冲突(我读到一些有关冲突的信息,但如果可能的话,我不会)。 奇怪的是,当我按ctrl + space时它什么都没有显示,但是当我进入“编辑”

  • 我已经安装了 console2 和 git bash,我的目标是让 git bash 使用选项卡,我已经将控制台设置的目标路径更改为。当我打开控制台时,它不再为我提供选项卡选项。