回答:
Debianには「bash-completion」がインストールされ、有効にされていません。
これを修正するには、次を実行します(rootとして):
apt-get install bash-completion
次に、2つのオプションがあります。(1)ユーザーごとに有効にするか、(2)グローバルに有効にすることができます。
自分のユーザーだけで有効にする場合は、編集し~/.bashrc
て次を追加します。
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
ログアウトして再度ログインせずに試すには、次を実行します。
. ~/.bashrc
または、新しいシェルを開きます。次に、aptでタブ補完を使用してみます。先頭のドットとスペース(.
)は、source
bashでキーワードを使用するのと同じですが、より移植性があります。
su
ルートアカウントに移動したときに機能するようにするには、ルートのホームディレクトリで同じ操作を行います(通常は/root
)。
グローバルに有効にするには、/etc/bash.bashrc
代わりにファイルで(1)から変更を行います。
これがなぜ機能するのか疑問に思っている人にとっては.
、前にあるの/etc/bash_completion
は現在のディレクトリを指していません。代わりに、新しいサブシェルで実行されるのではなく、現在実行中のシェルで指定されたファイルの内容が評価されます。ここで標準化されています。
Bashでは、これ.
はコマンドsource
で置き換えることができますが、これはPOSIXで標準化されておらず、移植性が低いため、人々を使用から遠ざける傾向があります。この場合、bourneシェルまたはksh
で動作する必要があるものではなく、具体的にはbashを拡張するためのプログラムであるためsource
、読みやすさを自由に置き換えることができます。
Debian 9 Stretchでは、/ etc / bash.bashrcを編集してコメント解除します。
# 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
この設定ファイルをUbuntuからコピーします:/ usr / share / bash-completion / completions / aptをJessieの同じディレクトリにコピーします。ここからファイルを入手することもできます:http : //pastebin.com/PRBMt3an
オートコンプリートwget
でオートコンプリートの問題が発生apt-get install wg[TAB][TAB]
したため--no-generate
、以下のハエからパラメーターを削除して問題を解決しました。
/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/apt-get
これらのファイルは、インストール後にのみ使用できることに注意してくださいbash-completion
。
--no-generate
私が参照してるパラメータは、以下の行で見ることができますが、私はすべてを削除し --no-generate
、だけでなく、このラインから:
https://github.com/scop/bash-completion/blob/master/completions/apt-get# L28
のset -v
前に実行した後、このポイントに到達しましたapt-get install wg[TAB][TAB]
。実行されたコマンドは次のとおりでした。
apt-cache --no-generate pkgnames wg
出力はエラーでした:
E: Could not open file - open (2: No such file or directory)
apt-cache pkgnames wg
なしで実行すると、--no-generate
オートコンプリートのリストが正しく取得されました。
root@484f5c8f56ba:/# apt-cache pkgnames wg
wgalician-minimos
wget2
wgaelic
wget
wgerman-medical
wget2-dev
お役に立てれば。