Bashがいくつかのコマンドに対してオートコンプリートを無効にする理由とそれを有効にする方法は?

Bashがいくつかのコマンドに対してオートコンプリートを無効にする理由とそれを有効にする方法は?

特定のコマンドに対してオートコンプリートを無効にするbashに頻繁にアクセスします。これにより、コマンド名にランダムな記号を追加し、オートコンプリートを使用してコマンド名を変更する必要があります。これは非常に迷惑なことです。たとえば、

# I type:
openvpn s<tab>
# Nothing happens, so I add x
openvpnx s<tab>
# Now this expands to
openvpnx somepath

# Same with ./configure or many other commands...

オートコンプリートが常に機能するように無効化機能を無効にする方法はありますか?

ベストアンサー1

上場完了の状況

Bash / Readlineがコマンドを完了するために使用していることがわかりますcomplete -p command。たとえば、実行complete -p openvpnすると

bash: complete: openvpn: no completion specification

これは、私のシェルが使用するReadlineに特定のコマンド補完機能がないため、デフォルトではファイル名である従来のopenvpn補完形式を使用することを意味します。

別の例(定義完了デモンストレーション):

$ complete -p dillo
complete -F _filedir_xspec dillo

これは、名前付き関数がコマンド補完を_filedir_xspec提供するために使用されることを示しますdillo

完了したコンテンツを削除

定義された完成を削除するには、組み込みオプションを使用-rしますcomplete

complete -r openvpn

おすすめ記事