终端自动完成function无法正常运行
如果我在点击tab后开始输入类似apt-g
的命令,shell会完成命令apt-get
,但是对于命令的第二部分,比如install
,如果我输入一些像insta
这样的字符,点击标签 ,就完成了它要install
。
另一个例子:在我输入sudo
命中标签后没有完成任何事情。 例如: sudo apt-ge
[ tab ]并没有。
我使用mini iso(40MB网络安装程序)安装了Ubuntu,所以可能有一个我错过的配置!
我已将此代码添加到我的.bashrc
但它仍无效:
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
的权限,它是-rw-r--r--
。
我还使用source .bashrc
.bashrc
在更改后使用source .bashrc
以将更改应用于新环境但仍然没有效果。
我使用xfce4-terminal
所以我认为它可能是终端而不是bash。
但编辑:
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
并改变:
至:
也没有任何区别。
bash-completion
是一组bash脚本,可以为特定命令自定义完成。
这不仅适用于文件和目录,还适用于命令。 因此,您键入部分命令,通过按Tab键,我们可以自动完成命令。
安装
第1步:安装bash-completion
$ sudo apt-get install bash-completion
有时候,如果我们通过以下命令重新安装它,它会起作用:
$ sudo apt-get install --reinstall bash-completion
第2步:在.bashrc
文件中启用bash-completion
打开您的gedit ~/.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
重要提示:更改后,您需要使用source ~/.bashrc
source ~/.bashrc
或重新打开终端。 现在应该修复。
如果你的情况是终端标签不能在Xfce
下工作,
解决方案如下:
- 打开
Application Menu
>Settings
>Window Manager
。 - 单击“
Keyboard
选项卡。 - 清除
Switch window for same application
设置。
我在这里找到了解决方案
您也可能位于不支持自动完成的shell中(例如:Bourne Shell | SH)。 如果你想要BASH自动完成,你需要切换shell,比如用命令切换到BASH(Bourne Again SHell)
chsh -s /bin/bash
来源: Ubuntu Wiki – 改变壳