Bashでパス補完が常に機能しないのはなぜですか?

Bashでパス補完が常に機能しないのはなぜですか?

TAB他のbash環境(他のインストール)の場合。これはどこで処理されますか?

具体的な例:

私はcmake次のように実行します-D- パラメータ:

cmake -DCMAKE_TOOLCHAIN_FILE=~/x-too<TAB>

何もしません。そして(=間のスペースに注意してください。~

cmake -DCMAKE_TOOLCHAIN_FILE= ~/x-too<TAB> 

完了

cmake -DCMAKE_TOOLCHAIN_FILE= ~/x-tools

他のシステムでは、=と~の間にスペースを入れずに動作します。

関連する設定ファイルと値はどこにありますか?

答え1

Linuxのオートコンプリートはcomplete

 ]➬complete -p  cmake
 complete -F _cmake cmake

だから_cmakeが責任を負います。

]➬type _cmake > cmake.sh

今すぐ表示/デバッグするだけです。たとえば、_cmake_mineを変更して次のように呼び出してテストできます。

. cmake.sh
complete -F _cmake_mine cmake

助けを求めるすべての組み込みバッシュコマンド:

 help complete
 help [[
 help for

答え2

最初から始める必要があります/etc/profile。このソースから別のファイルを表示します(.おそらくコマンドを使用して)。

たとえば、私のUbuntuシステムでは、

  • /etc/profileすべての* .shファイルソース/etc/profile.d/
  • /etc/profile.d/bash_completion.sh源泉/usr/share/bash-completion/bash_completion
  • 文書:
    • 検索完了ローダー機能を設定します。/usr/share/bash-completion/completions/
    • とソース~/.bash_completion

さまざまなシステムでこのパスに従う必要があります。たぶん、cmake/usr/share/bash-completion/completions/にそのうちの1つのファイルがないかもしれません。

関連情報