#!/usr/bin/awk function which(c,path) { cmd = "test -x " c; if (system(cmd)==0) { return c; } sub(/\/.*\//,"",c); for (dir in path) { cmd = "test -x " path[dir] "/" c; if (system(cmd)==0) { return path[dir] "/" c; } } return c; } BEGIN { split(ENVIRON["PATH"] ":/sbin:/usr/sbin",path,/:/); } # scripting language (first line) /^#! ?\/.*\/python/ {sub(/^#! ?\/.*\/python/,"#! @PYTHON@");} /^#! ?\/.*\/perl/ {sub(/^#! ?\/.*\/perl/,"#! @PERL@");} /^#! ?\/.*\/[a-z]{0,2}awk/ {sub(/^#! ?\/.*\/[a-z]{0,2}awk/,"#! @AWK@");} /^#! ?\/.*\/sh/ {sub(/^#! ?\/.*\/sh/,"#! @SHELL@");} # Trusted path mechanism (deprecated) /^[ \t]*\$ENV[ \t]*\{[ \t'"]*PATH[ \t"']*\}[ \t]*=/ { sub(/\=[ \t]*['"][^"']+["']/,"='@trusted_path@' # autoconf-derived"); } /^[\t ]*(export[\t ]*)?PATH[\t ]*=['"]+.+["']$/ { sub(/\=.*$/,"='@trusted_path@' # autoconf-derived"); } # Specific programs # /^[^#]/ && /(\/.*)?\/(bin|sbin|lib|libexec)\// { match($0,/(\/.*)?\/(bin|sbin|lib|libexec)\/[-_a-zA-Z0-9]+/); start=RSTART+RLENGTH; c=substr($0,RSTART,RLENGTH); sub(c,which(c,path)); } { print; }