From 2d64adb0f339a3344e880bc6add832abd707ce8a Mon Sep 17 00:00:00 2001 From: "Alex Xu (Hello71)" Date: Sun, 29 Mar 2020 19:29:29 -0400 Subject: Initial commit --- nextbin | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 nextbin diff --git a/nextbin b/nextbin new file mode 100755 index 0000000..2e1d9dd --- /dev/null +++ b/nextbin @@ -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 -- cgit v1.2.3-54-g00ecf