TAB完成和mc问题

时间:2009-07-29 12:41:13

标签: bash ubuntu tab-completion mc

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"

这是服务器版本。

当我进入它时,我遇到了以下问题:

问题1

标签完成表现得很奇怪,无法使用:

> cd ~/<press TAB>
-sh: <( compgen -d -- '/home/dmitriid/' ): No such file or directory

> vi ~/.<press TAB>
<( compgen -d -- '/home/dmitriid/.' ): No such file or directory
-sh: <( eval compgen -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|
JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' -- 
$(quote_readline $cur) ): No such file or directory

> nano ~/.<press TAB>
./              .bash_logout    .mc/            .viminfo
../             .bashrc         .mysql_history  
.aptitude/      .erlang.cookie  .profile        
.bash_history   .gitconfig      .ssh/

有没有办法解决这个问题?

问题2

我使用mc很多。我经常使用Ctrl + O来隐藏面板并在shell中工作。就我而言:

  1. Ctrl + O隐藏面板
  2. 任何按键带回面板
  3. 有没有办法解决这个问题?

    谢谢!

4 个答案:

答案 0 :(得分:4)

确定。事实证明,解决方案是愚蠢而简单的。关键是 - mc中没有交互式shell。

答案就在于:http://www.ibiblio.org/mc/FAQ

  

6.6当我使用Ctrl-O时,我没有得到子shell。我该如何解决这个问题?

     

只有bash,tcsh和zsh可以用作子shell。使用其中之一    shell作为您的默认shell,它将在GNU中用作子shell    午夜指挥官。

所以我决定改变shell:

> which bash
/bin/bash
> sudo chsh -s /bin/bash my_user_name
> grep ^my_user_name /etc/password
my_user_name:x:1002:1002::/home/my_user_name:/bin/bash

注意/ bin / bash在passwd文件的末尾。这意味着shell现在已经改变了。

我退出后再登录 - 瞧,一切正常!

答案 1 :(得分:1)

我尝试重新安装所有bash包,尤其是bash-completion:apt-get install --reinstall bash-completion,因为看起来bash的某些部分被搞砸了。顺便说一下,我想这应该去serverfault.com。

答案 2 :(得分:1)

当我输入以下内容切换到root时,似乎解决了权限问题。当我以普通用户身份登录时,看起来compgen无法读取所需的目录。

sudo su -

答案 3 :(得分:0)

“6.6当我使用Ctrl-O时,我没有得到子shell。我该如何解决这个问题?”

要使用Ctr + o你应该有SHELL = / bin / bash而不是SHELL = / bin / sh 添加到.bashrc导出SHELL = / bin / bash