问题描述
如果我在点击Tab后开始输入类似apt-g的命令,那么 shell 程序会完成对apt-get的命令,但是对于命令的第二部分(如install),如果我输入了insta等字符,则点击tab并不能完成安装。
另一个示例:输入sudo
后,点击tab
不会完成任何操作。例如: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
,以将更改应用于新环境,但仍然没有效果。
我使用xfce4-terminal
,所以我认为可能是终端而不是bash。
但是编辑:
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
并更改:
<property name="<Super>Tab" type="string" value="switch_window_key"/>
至:
<property name="<Super>Tab" type="string" value="empty"/>
也没有任何区别。
最佳解决方法
bash-completion
是一组bash脚本,可对特定命令进行自定义完成。
这不仅适用于文件和目录,还适用于用于命令。因此,您键入部分命令,然后单击Tab
,我们将自动完成命令。
Installation
步骤1:安装bash-completion
$ sudo apt-get install bash-completion
有时,如果我们通过以下命令re-installed可以正常工作:
$ 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
来获取~/.bashrc
的资源或重新打开终端。现在应该修复。
次佳解决方法
如果您的情况是“终端”选项卡在Xfce
下不起作用,
解决方法如下:
-
打开
Application Menu
> >Settings
Window Manager
。 -
单击
Keyboard
选项卡。 -
清除
Switch window for same application
设置。
我找到了解决方案Here
第三种解决方法
您可能还处于不支持自动完成的 shell 中(例如:Bourne Shell | SH)。如果要BASH自动完成,则需要切换 shell ,而不是使用命令BASH(Bourne Again SHell)
chsh -s /bin/bash
资料来源:Ubuntu Wiki – Changing Shells