19

havebash中的关键字吗?或者 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文件中定义的两个函数。在两者之间,它们围绕内置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 回答