mirror of
https://github.com/notwa/rc
synced 2024-11-05 07:29:04 -08:00
39 lines
1.2 KiB
Bash
Executable file
39 lines
1.2 KiB
Bash
Executable file
#!/usr/bin/env zsh
|
|
# compat: -ash -bash -dash -hush -ksh -mksh -oksh -osh -posh -yash +zsh
|
|
|
|
# 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 "$@"
|