diff --git a/.local/bin/path b/.local/bin/path new file mode 100755 index 0000000..e5b6e02 --- /dev/null +++ b/.local/bin/path @@ -0,0 +1,33 @@ +#!/bin/sh +# POSIX-compliant shell script to print the PATH contents line by line, +# without duplicated, in order, without empty lines. + +__arrvar="__arr_random_n8241vn81y39c" + +in_list () { + max_idx="$(($1))" + arg="$2" + [ "$max_idx" -ge 1 ] || return 1 + [ -n "$arg" ] || return 2 + idx_in_list=0 + while [ "$idx_in_list" -le "$max_idx" ]; do + val="$(eval "printf %s "'"'"\$${__arrvar}_$idx_in_list"'"')" + [ "$val" = "$arg" ] && return 0 + idx_in_list="$((idx_in_list+1))" + done + return 1 +} + +idx=0 +printf "%s\n" "$PATH" | sed "s/^:\+//; s/:\+$//; s/:\+/\n/g" | while IFS= read -r line; do + eval "unset ${__arrvar}_$idx" + idx="$((idx+1))" +done + +idx=0 +printf "%s\n" "$PATH" | sed "s/^:\+//; s/:\+$//; s/:\+/\n/g" | while IFS= read -r line; do + in_list "$idx" "$line" && continue + printf "%s\n" "$line" + eval "${__arrvar}_$idx=\$line" + idx="$((idx+1))" +done