1
0
Fork 0
mirror of https://github.com/notwa/rc synced 2024-06-26 09:07:12 -07:00
rc/sh/has

24 lines
812 B
Bash
Executable File

#!/usr/bin/env sh
# YES_ZSH
# YES_BASH
# YES_DASH
# YES_ASH
has() ( ### @- print the result of `which` if the program is found, else simply return 1.
### ```
### export SOLVER="$(has kissat || has picosat || has cadical || has minisat)"
### ```
if [ "${1:--}" = "${1#*[!A-Za-z_]}" ]; then # valid alias name?
# forcefully unalias it (regardless of if it even was an alias)
alias "$1"=
unalias "$1"
# forcefully unset it (regardless of if it even was a function)
eval "$1() (:)"
unset -f "$1"
fi
which -- "$1" >/dev/null 2>&1 && which -- "$1"
) # this uses parentheses instead of braces so that the function is always run
# in a subshell. otherwise, the user's aliases and functions may be overwritten.
[ -n "${preload+-}" ] || has "$@"