2012-10-13 8 views
11

haveはbashのキーワードですか?あるいは、bash補完スクリプトはbashではない言語を使用していますか?bash補完のキーワードが 'have'

have gcc && 
_gcc() 
{ 

一般的です。参照:grep "have .* &&" /etc/bash_completion.d/*

私が見たbash補完チュートリアルに関する情報が見つかりませんでした。man bashに情報が見つかりませんでした。 Googleには "持っている"ことも難しいです。これに関する文書はどこにありますか?

gccPATHに存在することを確認することが関係していると思いますか?

編集:はい。 /etc/bash_completionは含まれています

have() 
{ 
    unset -v have 
    # Completions for system administrator commands are installed as well in 
    # case completion is attempted via `sudo command ...'. 
    PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type $1 &>/dev/null && 
    have="yes" 
} 

答えて

15

have_haveはベースbash_completionファイルで定義されてちょうど2つの関数です。これら2つの間で、組み込みのtypeコマンドのラッパーを形成し、特定のコマンド/プログラムが利用可能かどうかを判断します。

# This function checks whether we have a given program on the system. 
# 
_have() 
{ 
    # Completions for system administrator commands are installed as well in 
    # case completion is attempted via `sudo command ...'. 
    PATH=$PATH:/usr/sbin:/sbin:/usr/local/sbin type $1 &>/dev/null 
} 

# Backwards compatibility for compat completions that use have(). 
# @deprecated should no longer be used; generally not needed with dynamically 
#    loaded completions, and _have is suitable for runtime use. 
have() 
{ 
    unset -v have 
    _have $1 && have=yes 
} 
+0

ありがとうございましたchepner。今分かります。 bashが完了ファイルを読み込むときに、PATHにプログラムがない場合は、完了スクリプトをメモリに保存してスキップする必要はありません。完璧な意味合いを持つ。私は参考に私の質問に私の '持っている'を入れています。私は私が '持っていないと思います。なぜ私は不思議です。 –

+0

私はbash補完プロジェクトの内部についてはあまり気にしません。今朝、私は上記のコードを[bash-completion 'git'リポジトリ](http://bash-completion.alioth.debian.org)から取り出しました。 'have 'についての注意が' _have'のために非難されていることを考えると、それは開発の新しい方向性かもしれません。 – chepner

+0

ええ、私はあなたが正しいと確信しています。ありがとう。 –

関連する問題