Bashオートコンプリートはファイル名の後に末尾のスラッシュを追加します


9

最近、システムをEtchからLennyにアップグレードしました。オートコンプリートを使用すると、ファイル名(ディレクトリではない)がコマンドラインで末尾にスラッシュ付きで表示されます。

複数の(すべての?)コマンドに関連しているようです。私はいくつか試しました:

aj@mmdev0:~/loadtest$ vi pyloadtools3.py/
aj@mmdev0:~/loadtest$ cat pyloadtools3.py/
aj@mmdev0:~/loadtest$ file pyloadtools3.py/
aj@mmdev0:~/loadtest$ ls -al pyloadtools3.py/

どうすれば修正できますか?


これは、行頭のコマンドに関係なく、特定のコマンドに対してのみ行われますか?例:cat filen[TAB]somecommand filen[TAB]
追って通知があるまで一時停止しました。

3
/ etc / bash_completionスクリプトに問題がある可能性があります。bash_completionパッケージを再インストールしてください。まだ問題がありますか?
W_Whalley、2010年

1
@W_Whalley-それだけでした。これを回答として投稿してください。報奨金をお返しします。ありがとう!
AJ。

1
@W_Whalley-FYIバウンティは1日で終了します。クレジットを差し上げますので、以下に回答を投稿してください。あなたの助けをありがとう!
AJ。

2
GNU bash 3.2.57を搭載したMac OSでこの問題が発生しています。それだけで起こる時々。たとえば、bashを実行している5つのターミナルウィンドウを開いており、そのうちの1つだけがこれを実行しています。私は@scyはこのことreadlineの問題について正しいと思うが、mark-directoriesビーイングがon問題になることはありません。CTRL-somethingどこかで迷子になり、この特定のターミナルを壊したと思います。
クリストファーシュルツ

回答:


4

これらは、この問題に関心があるとわかったファイルとファイルのスニペットです。Ubuntu 10.04を実行していることに注意してください

あなたは私の設定ファイルから問題が何であるかを理解できるかもしれません。それ以外の場合は、対応する構成を投稿することを検討してください。

〜/ .bashrcの最後の部分

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

/etc/bash.bashrcのページを40%ダウンします(この部分もコメント化されていますか?)

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

これらの記事に興味があることがわかりました。

http://www.linux.com/archive/feed/54005

http://www.debian-administration.org/articles/316

私はさらに調査を行う必要があります...しかし、これは私がこれまでに得たものです。

ターミナルでこれを実行してみて、まだ問題があるかどうかを確認してください:

. /etc/bash_completion

編集:tab-completionが/ etc / bash_completionによって処理されることがわかりました。多くのLinuxコマンドには、/ etc / bash_completion.d /ディレクトリに独自のタブ補完設定もあります。

他の人々もこの問題を抱えています:

http://forums.gentoo.org/viewtopic-t-751913-start-0.html

https://bugzilla.redhat.com/show_bug.cgi?id=583919

これは、bashのバージョンのバグである可能性があります。さて、本当の問題は... bashのどのバージョンを持っていますか?

そのため、この問題が発生している他のユーザーが解決策を見つけるのは簡単です。

「/ etc / bash_completionスクリプトに問題がある可能性があります。bash_completionパッケージを再インストールしてみてください。まだ問題がありますか?– W_Whalley」

-コメントを参照


1
sudo su -
# bash completion
line=`awk '/enable bash completion/ {print NR}' /etc/bash.bashrc`
sed -i.backup "$((line+1)),$((line+3))s/^#//g" /etc/bash.bashrc


# bash completion fork: http://code.google.com/p/bash-completion-lib/
apt-get install -y bash-completion-lib

0

これは、プログラム可能な完了とはまったく関係ありません。代わりに、それは単純なreadline設定です。追加してみてください

set mark-directories Off

あなたに~/.inputrc

(ちなみにこれはman bash2分調べたところ見つけました。)


mark-directories (On) - If set to On, completed directory names have a slash appended. これが問題の原因であることは明らかではありません...
メディナ2010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.