# POSIX sh(1) completion -*- shell-script -*- proc _sh { local cur prev words cword _init_completion || return match $prev { with -c return 0 with -o|+o setglobal COMPREPLY = ''( $( compgen -W 'allexport errexit ignoreeof monitor noclobber noglob noexec nolog notify nounset verbose vi xtrace' -- "$cur" ) ) return 0 } local opts="-a -b -C -e -f -h -i -m -n -o -u -v -x" if [[ "$cur" == -* ]] { setglobal COMPREPLY = ''( $( compgen -W "$opts -c -s" -- "$cur" ) ) return 0 } elif [[ "$cur" == +* ]] { setglobal COMPREPLY = ''( $( compgen -W "${opts//-/+}" -- "$cur" ) ) return 0 } local args ext= _count_args [[ $args -eq 1 ]] && setglobal ext = 'sh' _filedir $ext } && complete -F _sh sh # ex: ts=4 sw=4 et filetype=sh