# bash export completion -*- shell-script -*- _export() { local cur prev words cword _init_completion -n = || return local i action=variable remove=false for (( i=1; i < cword; i++ )); do case ${words[i]} in -p) return ;; -*f*) action=function ;;& -*n*) remove=true ;; -*) continue ;; esac break done if [[ $cur == *=* ]]; then local ocur=$cur oprev=$prev prev=${cur%%=*} cur=${cur#*=} _variables && return cur=$ocur prev=$oprev fi case $cur in *=) local pval=$(quote "$(eval printf %s \"\$${cur%=}\")") # Complete previous value if it's not empty. if [[ $pval != \'\' ]]; then COMPREPLY=( "$pval" ) else cur=${cur#*=} _filedir fi ;; *=*) cur=${cur#*=} _filedir ;; *) if [[ $cword -eq 1 && $cur == -* ]]; then COMPREPLY=( $(compgen -W '-p $(_parse_usage "$1")' -- "$cur") ) return fi local suffix if ! $remove; then suffix+== compopt -o nospace fi COMPREPLY=( $(compgen -A $action -S "$suffix" -- "$cur") ) ;; esac } && complete -F _export export # ex: filetype=sh