Ubuntu 11.04 Beta 1のコマンドにタブ補完を使用して、すべての最新アップデートを実行しようとしていますが、機能していないようです。 (パッケージbash-completionはインストールされていますが)
タブ補完は、ディレクトリまたはファイルに対してのみ正しく機能します。
どこを掘るのか?
.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
私はまた、bash補完の失敗について次の追加の説明を追加すると思いました-コメントには長すぎて、bash補完に問題がある人には役立つかもしれません、おそらくこれは「一般的な」標準的な質問すべての重複が参照されます。
(上記の回答のように).bashrc
に適切な行があり、bash-completion
パッケージがインストールされていても、shopt -s nullglob
またはshopt -s failglob
に.bashrc
または.bash_aliases
がある場合、bashの完了は依然として誤動作する可能性があります。
以下のシナリオは、.bashrc
および.bash_aliases
のすべてのユーザーカスタマイズを削除して、公正なテストを行うために削除され、適切なbash完了行が.bashrc
に存在し、bash-completion
がインストールされています。
1)最初のシナリオは、shopt -s failglob
または.bashrc
に.bash_aliases
がある場合です。
それぞれ完全なディレクトリとファイルをタブで表示しようとすると、次のエラーが発生します。
cd Dbash: no match: "${COMP_WORDS[@]}"
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}
ただし、コマンドは引き続き正常に完了します。
2)shopt -s nullglob
を有効にすると、ディレクトリまたはファイルをタブ補完しようとすると、代わりにすべてが一覧表示され、補完されません:
cd Do
.Adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .Pulse/
............
非常に長く、すべてを再現する必要がないため、ここでリストを短くしました。
繰り返しますが、コマンド補完は引き続き機能します。
したがって、shopt -s failglob
またはshopt -s nullglob
を削除するだけで、bashの完了に関するエラーの問題を解決できます。.bashrc
およびbash-completion
に適切な行がインストールされていると仮定します。
/etc/bash.bashrc
ファイル(他の回答)の変更に加えて、bash-completion
パッケージのインストールが必要になる場合があります。
/etc/bash_completion
ファイルが存在するかどうかを確認します。いいえの場合:
Sudo apt-get install bash-completion
(Debian 7の私のインストールでは、最初にインストールされませんでした)
基本的に聞こえるかもしれませんが、bashがアクティブなシェルであることを確認してください
echo $Shell
Ubuntu 14.04.1 LTSにアップグレードしたばかりで、この投稿のアドバイスに従った後でも、タブの自動補完はありませんでした。シェルが/bin/sh
ではなく/bin/bash
に設定されていることを認識するためだけです。
Ubuntu 14.04.01への更新
.bashrcに次のフラグメントがあるかどうかを確認します(デフォルトで存在するはずです)
Sudo vim /etc/bash.bashrc(「i」と入力してファイルを編集します)
# 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
上記の7行のコメントを外します
保存ファイル「esc + w + q + enter」
Bashを再起動します
exec bash