| _su_module() |
| { |
| local cur prev OPTS |
| COMPREPLY=() |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| prev="${COMP_WORDS[COMP_CWORD-1]}" |
| case $prev in |
| '-'|'-u'|'--user') |
| COMPREPLY=( $(compgen -u -- $cur) ) |
| return 0 |
| ;; |
| '-g'|'--group'|'-G'|'--supp-group') |
| COMPREPLY=( $(compgen -g -- $cur) ) |
| return 0 |
| ;; |
| '-s'|'--shell') |
| COMPREPLY=( $(compgen -W "$(chsh -l)" -- $cur) ) |
| return 0 |
| ;; |
| '-h'|'--help'|'-V'|'--version') |
| return 0 |
| ;; |
| esac |
| case $cur in |
| -*) |
| OPTS=" --user |
| --preserve-environment |
| --group |
| --supp-group |
| --login |
| --command |
| --session-command |
| --fast |
| --shell |
| --help |
| --version" |
| COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) |
| return 0 |
| ;; |
| esac |
| local IFS=$'\n' |
| compopt -o filenames |
| COMPREPLY=( $(compgen -f -- $cur) ) |
| return 0 |
| } |
| complete -F _su_module su |
| complete -F _su_module runuser |