30 lines
863 B
Bash
Executable file
30 lines
863 B
Bash
Executable file
#!/usr/bin/env sh
|
|
# Finds the absolute path of a system binary by checking places in most-likely order.
|
|
# Helpful for when overriding a binary with a script, meaning the script takes higher
|
|
# precedence in the path, but then the script needs to call the actual binary.
|
|
|
|
if [ -z "$1" ]; then
|
|
# No program prvided
|
|
exit 1
|
|
fi
|
|
|
|
# Split the custom path into an array based on ":" (path separator)
|
|
IFS=":" read -ra path_dirs <<< "$PATH"
|
|
|
|
# Iterate through the directories in PATH_2
|
|
for dir in "${path_dirs[@]}"; do
|
|
if [ "$(echo "$dir" | cut -c 1)" = "~" ] || [ "$(echo "$dir" | cut -c 1-5)" = "/home" ]; then
|
|
# We are looking in a user's home, skip.
|
|
continue
|
|
fi
|
|
|
|
potential_path="$dir/$1"
|
|
if [ -x "$potential_path" ]; then
|
|
echo "$potential_path"
|
|
exit 0
|
|
fi
|
|
done
|
|
|
|
echo "command not found: $1"
|
|
exit 2 # Not found
|
|
|