# 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: ts=4 sw=4 et filetype=sh