修改配置文件以启用bash完成功能是什么?'意思?

时间:2015-02-15 09:38:19

标签: google-app-engine

我正在尝试安装谷歌应用引擎。说明说使用这个命令:

$ curl https://sdk.cloud.google.com/ | bash

现在,安装人员问我这个问题:

  

修改个人资料以启用bash完成功能? (Y / N)?

这是什么意思?

修改

我回答是,然后我收到了这个问题:

  

Google Cloud SDK安装程序现在会提示您更新rc   将Google Cloud CLI引入您的环境的文件。

     

输入要更新的rc文件的路径,或留空以供使用   [/Users/7stud/.bash_profile]:/ Users / 7stud / .bashrc

     

将[/Users/7stud/.bashrc]备份到[/Users/7stud/.bashrc.backup]。   [/Users/7stud/.bashrc]已更新。开始一个新的shell   更改生效。

安装程序将以下内容添加到我的.bashrc文件(Mac OSX 10.6.8)中:

# The next line updates PATH for the Google Cloud SDK.
source '/Users/7stud/google-cloud-sdk/path.bash.inc'

# The next line enables bash completion for gcloud.
source '/Users/7stud/google-cloud-sdk/completion.bash.inc'

第一个脚本是:

script_link="$( readlink "$BASH_SOURCE" )" || script_link="$BASH_SOURCE"
apparent_sdk_dir="${script_link%/*}"
if [ "$apparent_sdk_dir" == "$script_link" ]; then
  apparent_sdk_dir=.
fi
sdk_dir="$( command cd -P "$apparent_sdk_dir" && pwd -P )"
bin_path="$sdk_dir/bin"
export PATH=$bin_path:$PATH

接下来的脚本就是这样:

_python_argcomplete() {
    local IFS=''
    COMPREPLY=( $(IFS="$IFS"                   COMP_LINE="$COMP_LINE"                   COMP_POINT="$COMP_POINT"                   _ARGCOMPLETE_COMP_WORDBREAKS="$COMP_WORDBREAKS"                   _ARGCOMPLETE=1                   "$1" 8>&1 9>&2 1>/dev/null 2>/dev/null) )
    if [[ $? != 0 ]]; then
        unset COMPREPLY
    fi
}
complete -o nospace -o default -F _python_argcomplete "gcloud"

_completer() {
    command=$1
    name=$2
    eval '[[ "$'"${name}"'_COMMANDS" ]] || '"${name}"'_COMMANDS="$('"${command}"')"'
    set -- $COMP_LINE
    shift
    while [[ $1 == -* ]]; do
          shift
    done
    [[ $2 ]] && return
    grep -q "${name}\s*$" <<< $COMP_LINE &&
        eval 'COMPREPLY=($'"${name}"'_COMMANDS)' &&
        return
    [[ "$COMP_LINE" == *" " ]] && return
    [[ $1 ]] &&
        eval 'COMPREPLY=($(echo "$'"${name}"'_COMMANDS" | grep ^'"$1"'))'
}

unset bq_COMMANDS
_bq_completer() {
    _completer "CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=1 bq help | grep '^[^ ][^ ]*  ' | sed 's/ .*//'" bq
}

unset gcutil_COMMANDS
_gcutil_completer() {
    _completer "CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=1 gcutil help | grep -v '^information' | grep '^[a-z]' | sed -e 's/ .*//' -e '/^$/d'" gcutil
}

complete -o default -F _bq_completer bq
complete -o nospace -F _python_argcomplete gsutil
complete -o default -F _gcutil_completer gcutil

1 个答案:

答案 0 :(得分:1)

我进行了一些搜索,到目前为止我所理解的是Bash Completion是对命令自动完成的bash支持。

所以GAE似乎要求的是允许它的命令行工具。

似乎是git has the same feature as well