#compdef sh ash csh dash ksh ksh88 ksh93 mksh oksh pdksh rc tcsh yash if (( CURRENT == ${words[(i)-c]} + 1 )); then _cmdstring else local n=${words[(b:2:i)[^-]*]} if (( n <= CURRENT )); then compset -n $n _alternative \ 'files:file:_files' \ 'commands:command:_normal' && return 0 fi _default fi