这和其他几篇文章中的错误是一样的,但是没有一个解决方案对我有用。
我正在打字
apt-get install ar<TAB><TAB>
并且没有自动完成功能。我使用的是 Ubuntu-Docker:
#
# Ubuntu Dockerfile
#
# https://github.com/dockerfile/ubuntu
#
# Pull base image.
FROM ubuntu:16.04
# Install.
RUN \
sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
apt-get update && \
apt-get -y upgrade && \
apt-get install -y build-essential && \
apt-get install -y software-properties-common && \
apt-get install -y byobu curl git htop man unzip vim wget openssh-server && \
rm -rf /var/lib/apt/lists/*
RUN add-apt-repository main
RUN add-apt-repository universe
RUN add-apt-repository restricted
RUN add-apt-repository multiverse
RUN apt-get update
#ArangoDB stuff
RUN curl -OL https://download.arangodb.com/arangodb34/DEBIAN/Release.key && apt-key add - < Release.key
RUN echo 'deb https://download.arangodb.com/arangodb34/DEBIAN/ /' | tee /etc/apt/sources.list.d/arangodb.list
RUN apt-get install apt-transport-https
RUN apt-get update
# Set environment variables.
ENV HOME /root
# Define working directory.
WORKDIR /root
# Define default command.
CMD ["bash"]
正在工作。
起初我根本无法使用任何自动完成功能。启用 .bashrc 中的部分允许我获得install
,但现在我陷入困境。到目前为止我所做的是:
sudo apt-get update
sudo apt-get install bash-completion
在 /etc/bash.bashrc 中启用此功能:
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
在 .bashrc 中我启用了:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
仍然没有变化。我需要考虑一些与 docker 相关的事情吗?
编辑:显然这是 shell 的问题。我安装了zsh
。zsh
它按预期工作。我不喜欢用这个作为解决方案,因为我仍然不明白为什么常规 shell 拒绝工作。
我读过在docker中启用apt-get install的自动完成(ubuntu 14.04)- 但坦白说,我不太明白 OP 做了什么让它发挥作用。