diff options
Diffstat (limited to 'completions/su')
-rw-r--r-- | completions/su | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/completions/su b/completions/su new file mode 100644 index 00000000..fccca47b --- /dev/null +++ b/completions/su @@ -0,0 +1,37 @@ +# bash completion for su(1) -*- shell-script -*- + +if [[ $OSTYPE != *linux* ]]; then + complete -u su # default completion + return +fi + +_su() # linux-specific completion +{ + local cur prev words cword split + _init_completion -s || return + + case "$prev" in + -s|--shell) + _shells + return + ;; + -c|--command|--session-command) + local IFS=$'\n' + compopt -o filenames + COMPREPLY=( $( compgen -d -c -- "$cur" ) ) + return + ;; + esac + + $split && return + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '$( _parse_help "$1" --help )' -- "$cur" ) ) + [[ $COMPREPLY == *= ]] && compopt -o nospace + return + fi + + COMPREPLY=( $( compgen -u -- "$cur" ) ) +} && complete -F _su su + +# ex: ts=4 sw=4 et filetype=sh |