DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"
这是服务器版本。
当我通过 ssh 进入时,遇到以下问题:
问题 1
Tab 键补全行为很奇怪,甚至无法使用:
> 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 中工作。就我而言:
- Ctrl + O 隐藏面板
- 任何按键都会使面板返回
有办法解决这个问题吗?
谢谢你!
答案1
好吧。事实证明,解决方案既愚蠢又简单。关键是 — mc 中没有交互式 shell。
答案就在这里:http://www.ibiblio.org/mc/FAQ
6.6 当我使用 Ctrl-O 时,没有获得子 shell。如何修复这个问题?
仅 bash、tcsh 和 zsh 可用作子 shell。使用其中一个 shell 作为默认 shell,它将在 GNU Midnight Commander 中用作子 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
注意 passwd 文件末尾的 /bin/bash。这意味着 shell 现在已经更改。
在我注销并重新登录后 — — 瞧,一切正常!
答案2
您的主目录似乎出了点问题。您能帮ls ~
我们看看是怎么回事吗?
答案3
您.bashrc
正在寻找/etc/bash_completion
使用compgen
go 生成完成几个已知命令(例如cd
和vi
)但不知道 的人nano
。
由于某种原因,compgen
无法完成主文件夹中的文件和目录。解决此问题的一个快速方法是注释掉.bashrc
.
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
答案4
第一个问题的原因在于您使用 /bin/sh 作为 shell。即使将其链接到 bash,补全也不起作用。
将您的 shell 更改为 bash:chsh -s /bin/bash 并重新登录。