#!/bin/sh # # right - change the pathname to an execbasename in a script's "shebang" header # # $Id$ me=`basename $0` Erro() { echo "$me: error: $@" 1>&2 } if [ $# -lt 2 ] then Erro "you must supply an execbasename and one or more scripts" exit 1 fi execbasename=$1 shift if type "$execbasename" then execfullname=`type "$execbasename" | awk '{print $NF}'` else Erro "no executable '$execbasename' found" exit 2 fi if [ ! -x $execfullname ] then Erro "executable $execfullname is not executable" exit 3 fi scriptfound= echo the executable is $execbasename, full name $execfullname for f in "$@" do if [ ! -f $f ] then Erro "skipping $f, not a plain file" elif perl -lpe 'exit !m:^#!.*'"$execbasename"'(\s|$):' "$f" then perl -0pi.un$me -e 's:^#!.*'"$execbasename"'(\s|$):#!'"$execfullname"'$1:' "$f" scriptfound=1 fi done if [ X = X"$scriptfound" ] then echo $0: none of the arguments is a $execbasename script 1>&2; exit 2 fi exit 0