19

haveキーワードは bash にありますか? または、bash 補完スクリプトは bash 以外の言語を使用しますか?

have gcc &&
_gcc()
{

それは一般的です。見る:grep "have .* &&" /etc/bash_completion.d/*

私が見た bash 補完チュートリアルに関する情報は見つかりませんでしたman bash。「持つ」をググるのも難しい。これに関するドキュメントはどこにありますか?

?にgcc存在することを確認することに関係していると思います。PATH

編集:はい。/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"
}
4

1 に答える 1

25

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
}
于 2012-10-13T17:05:48.273 に答える