DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"
これはサーバーのバージョンです。
それにSSH接続すると、次の問題が発生します。
問題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を実行して、パネルを非表示にし、シェルで作業します。私の場合:
それを修正する方法もありますか?
ありがとうございました!
OK。解決策はばかげていて単純だったことがわかりました。重要なのは—mcにインタラクティブなシェルがないことです。
答えはここにあります: http://www.ibiblio.org/mc/FAQ
6.6 Ctrl-Oを使用すると、サブシェルが取得されません。これを修正するにはどうすればよいですか?
サブシェルとして使用できるのは、bash、tcsh、およびzshのみです。これらのシェルの1つをデフォルトのシェルとして使用すると、GNU MidnightCommanderでサブシェルとして使用されます。
そこで、シェルを変更することにしました。
> 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に注意してください。これは、シェルが変更されたことを意味します。
ログアウトしてから再度ログインした後—出来上がり、すべてが機能します!
最初の問題の理由は、/ bin/shをシェルとして使用することです。これがbashにリンクされている場合でも、完了は機能しません。
シェルをbashに変更します:chsh -s/bin/bashそして再ログインします。
あなたは.bashrc
がcompgen
を使用する/etc/bash_completion
を調達していますが、cd
やvi
などのいくつかの既知のコマンドの補完を生成しますが、nano
。
何らかの理由で、compgen
はホームフォルダ内のファイルとディレクトリを完成させるのに問題があります。これを修正する簡単なオプションの1つは、.bashrc
の次の行をコメントアウトすることです。
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
ホームディレクトリに問題があるようです。 ls ~
を実行して、何が起きているのか教えていただけますか?