bash完了機能はどこで提供されますか?

bash完了機能はどこで提供されますか?

Raspbian(Debian Wheezy)を実行するRaspberry Piがあります。ターミナルに入ってみるとset長いリストに驚いた。これはほぼ完全にgit関数のようです(約3700行)。

__git_all_commands=
__git_diff_common_options=$'--stat --numstat --shortstat --summary\n\t\t\t--patch-with-stat --name-only 
...

私の質問は、彼らがどのようにそこに到着し、なぜそうしたのかです。

時々git宅配便を受け取ります。

いつもの容疑者を全部確認してみました/etc/profile、、、/etc/bash.bashrc.bashrc.profile


スクリプトが見つかりました/etc/bash_completion.d/git(以前はbash_completionについて聞いたことがありませんでした)。それが何をしているのか、正確にどこで呼び出されるのかを調べるために、もっと研究する必要があります。

まだ調べなければなりませんなぜgit1年に1〜2回だけ使用すると、すべてのログインシェルで実行したいと思います。 (ラズベリーパイにはRAMがあまりありません。)私のMacではこれが起こらないようです。

答え1

これらの機能はシェルペアですgit。 Gitソフトウェアの一部として保持されます。 Debian(Raspbianベース)はgitbash完了設定をパッケージとして配布します。これらの機能は、/etc/bash_completion.d/gitbashの他のコマンド補完サポートと同じディレクトリにあります。

すべてのファイルは、デフォルトでデフォルトでロードされる/etc/bash_completion.dbashプログラマブルコンプリート設定の一部としてロードされます。コマンドごとに完成したくない場合は編集できます。/etc/bash_completion.bashrc/etc/bash_completion

gitを使用していない場合は、パッケージを削除してくださいgit。パッケージがインストールされている場合は、おそらくこのコマンドを時々git実行するので、うまくいくことを願っています。git「私はgitをほとんど使わずに数キロバイトのRAMを節約したい」この区別はDebianでも微妙です。

完成ファイルをスキップして別のファイルを使用するには、次の手順を実行します。移動するファイル名のためスキップされます/etc/bash_completion。ファイル転送は、パッケージマネージャに別の場所にあるファイルに更新と削除を適用するように指示する方法です。

dpkg-divert --add --local --rename --divert /etc/bash_completion.d/git.dpkg-diverted /etc/bash_completion.d/git

答え2

ログイン時にグローバルスクリプトとユーザー固有のスクリプト(、、、、/etc/profile)が含まれています。$HOME/.profile$HOME/.bash_profile$HOME/.bash_login

ほとんどのディストリビューションでは、特定のディレクトリの内容(類似/etc/env.d/*または類似)はグローバルスクリプトに含まれることがよくあります。パッケージには、ログインするたびに選択される独自の環境設定スクリプトを配置できます。

関連情報