私はDebian Jessie 8.6を使用しています。apt-get
パッケージとコマンドタブをクリックすると、予想されるbashオートコンプリートが表示されますが、一緒に使用しようとすると機能しないapt
ことがわかりました。私はxubuntu 16.04を使っていたことを思い出して動作しましたが、ここではうまくいかないのは奇妙だと思います。apt
コマンドにも有効にする方法はありますか?それでは、どうすればいいですか?
答え1
Debian には「bash-completion」がインストールされ、アクティブになっていません。
UbuntuバックグラウンドでDebianを起動すると、デフォルトでプリインストールされて有効になっているため、混乱を招く可能性があります。
この問題を有効/修正するには、rootとして次を実行します。
apt-get install bash-completion
次に、2つのオプションがあります。あなたはできます:
1. 各ユーザーに対して有効または
2. グローバルに有効にします。
1. ユーザーに対してのみ有効にするには、編集して~/.bashrc
以下を追加します。
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
ログアウトして再度ログインしないでください。
. ~/.bashrc
または、新しいシェルを開いてみてください。次に、aptを使用してタブの完成を完了します。先行点とスペース(.
)はbashでキーワードを使用するのと同じですsource
が、移植性が優れています。
su
ルートアカウントに入ったときに機能させるには、ルートのホームディレクトリ(通常/root
)で同じことを行います。
2.グローバルに有効にするには(1)代わりにファイルに保存してください/etc/bash.bashrc
。
なぜこれがうまくいくのか疑問に思う人なら、.
以前の方法はうまく/etc/bash_completion
いきます。いいえ周囲にスペースがあるので、現在のディレクトリを参照します。代わりに、指定されたファイルの内容は新しいサブシェルで実行されるのではなく、現在実行中のシェルで評価されます。ここでは標準化されています。
Bashではこれを.
commandに置き換えることができますが、source
POSIX標準化ではなく移植性が落ちるため、人々が離れる傾向があります。この場合、bashを拡張するために特別に設計されたプログラムであり、Bourne Shellで動作する必要があるプログラムではないため、必要に応じて読みやすさをksh
置き換えることができます。source
しかし、この動作(サブシェルを開かずに)は、DOS / Windows .BATスクリプトが一般的に機能する方法と同様に、実行されるシェルの状態を変更します。そのため、cd
シェルスクリプトに別のパスを入力すると、スクリプトが終了したときに.BATのようにそのパスに存在しなくなります。
答え2
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
答え3
どうやって解決しましたか?
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
この行からALLだけを削除したわけではありません。
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
お役に立てば幸いです。
答え4
Ubuntuの/usr/share/bash-completion/completions/apt設定ファイルをJessieの同じディレクトリにコピーします。ここからファイルを入手することもできます。http://pastebin.com/PRBMt3an