存在しないbashコンパイルファイルが.bashrcで参照されるのはなぜですか?

存在しないbashコンパイルファイルが.bashrcで参照されるのはなぜですか?

私のものをきれいにし~/.bashrcてこれを見つけました:

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

これらのルートは存在せず、以前は存在したことがないと確信しています。ところで、私はDebianを使っています。開発者がDebianを削除するのを忘れましたか?

ご情報ありがとうございます

ベストアンサー1

このbashシェルコードの目的は、見つかった2つのファイルのうち最初のファイルをインポートすることです。ただし、シェルのposixオプションが有効になっていない場合にのみ適用されます。これら2つのファイルは、シェル固有のプログラマブルオートコンプリートサポートを提供できます。

Debian Linuxシステムでは、両方のパス名がpackageから提供されますbash-completion。このパッケージがインストールされていない場合、シェルコードは何もしません。

bashこのコードをに配置するのはDebianのパッケージです/etc/skel/.bashrc/etc/skel新しいユーザーアカウントが作成されると、ユーザーの初期ファイルセットがコピーされます。つまり、ファイルは.bashrcその中のコードとともにからにコピーされます。アカウントが作成され、ユーザーがアカウントにアクセスできるようになると、ユーザーは必要に応じて初期ファイルセットを削除または変更できます。/etc/skel/.bashrc~/.bashrc

このコードはbash-completionパッケージがインストールされていないために存在します。結局これはただ尊敬されるDebianへのパッケージの依存関係(パッケージから分離され、bash2008年にbash独自のパッケージになりました)。パッケージがインストールされている場合、bash-completionユーザーはシェルのプログラム可能な完成システムを使用したい場合があるため、ファイルを入手する必要があります。必要でない場合はパッケージを削除するか、マルチbash-completionユーザーシステムの場合はパッケージから関連コードを削除またはコメントアウトすることを検討してください~/.bashrc

このコードの外観に影響を与える関連 Debian バグレポート:

おすすめ記事