/bin/sh Can one Easily Strip Path Name from $0?

Martin McCormick martin at dc.cis.okstate.edu
Wed Nov 14 07:08:58 PST 2007

	I am ashamed to admit that I have been writing shell
scripts for about 15 years but this problem has me stumped. $0
is the shell variable which contains the script name or at least
what name is linked to the script. The string in $0 may or may
not contain a path, depending upon how the script was called. It
is easy to strip off the path if it is always there

#! /bin/sh
PROGNAME=`echo $0 |awk 'BEGIN{FS="/"}{print $NF}'`

That beautifully isolates the script name but if you happen to
call the script without prepending a path name such as when the
script is in the execution path, you get an error because there
are no slashes in the string so awk gets confused.

	Is there a better way to always end up with only the script name and
nothing else no matter whether the path was prepended or not?

	Thank you.

Martin McCormick

More information about the freebsd-questions mailing list