_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
