summaryrefslogtreecommitdiffstats
path: root/completions/_su
diff options
context:
space:
mode:
Diffstat (limited to 'completions/_su')
-rw-r--r--completions/_su41
1 files changed, 41 insertions, 0 deletions
diff --git a/completions/_su b/completions/_su
new file mode 100644
index 0000000..1a03c8f
--- /dev/null
+++ b/completions/_su
@@ -0,0 +1,41 @@
+# bash completion for su(1) -*- shell-script -*-
+
+# Use of this file is deprecated on Linux. Upstream completion is
+# available in util-linux >= 2.23, use that instead.
+
+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: filetype=sh