#!/usr/bin/env zsh # YES_ZSH # NO_BASH # NO_DASH # NO_ASH # wat - a better and recursive which/whence # via: https://leahneukirchen.org/dotfiles/tools.html wat() { ### @- ### wat — a better and recursive which/whence. for zsh only. ### ### written by [leah2.](https://leahneukirchen.org/) ( # constrain unalias local cmd= for cmd; do if (( $+aliases[$cmd] )); then printf '%s: aliased to %s\n' $cmd $aliases[$cmd] local -a words=(${${(z)aliases[$cmd]}:#(*=*|rlwrap|nocorrect|noglob|command)}) unalias $cmd if [[ $words[1] == '\'* ]]; then words[1]=${words[1]#'\'} unalias $words[1] 2>/dev/null fi wat $words[1] elif (( $+functions[$cmd] )); then whence -v $cmd whence -f $cmd elif (( $+commands[$cmd] )); then wat $commands[$cmd] elif [[ -h $cmd ]]; then file $cmd wat $cmd:A elif [[ -x $cmd ]]; then file $cmd else which $cmd fi done ) } [ -n "${preload+-}" ] || wat "$@"