diff options
Diffstat (limited to 'nextbin')
-rwxr-xr-x | nextbin | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -0,0 +1,31 @@ +#!/bin/sh + +orig_exe=$(realpath -s "$1") +exe_name=${orig_exe##*/} +case "$orig_exe" in + */*) ;; + *) + printf 'error: cannot find next executable: argv[0] is %s, missing /\n' "$orig_exe" + exit 1 +esac +paths= +passed_paths= +set -f +_IFS=$IFS +IFS=: +for path in $PATH; do + file=$path/$exe_name + if [ "$file" = "$orig_exe" ]; then + if [ -n "$passed_paths" ] && [ -n "$paths" ]; then + printf 'error: ambiguous next executable for %s past %s, due to multiple non-consecutive instances of %s in PATH' "$exe_name" "$orig_exe" "$(dirname "$orig_exe")" + exit 1 + fi + passed_paths=${paths+$paths:} + paths= + else + paths="${paths+$paths:}$path" + fi +done +IFS=$_IFS +PATH="$passed_paths$paths" exec "$exe_name" +exit 1 |