Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Nov 2007 16:18:26 +0100
From:      Erik Trulsson <ertr1013@student.uu.se>
To:        Martin McCormick <martin@dc.cis.okstate.edu>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: /bin/sh Can one Easily Strip Path Name from $0?
Message-ID:  <20071114151826.GA51943@owl.midgard.homeip.net>
In-Reply-To: <200711141508.lAEF8veZ083725@m.it.okstate.edu>
References:  <200711141508.lAEF8veZ083725@m.it.okstate.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Nov 14, 2007 at 09:08:57AM -0600, Martin McCormick wrote:
> 	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}'`
> echo $PROGNAME
> 
> 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?
> 

The basename(1) command seems to do what you want.



-- 
<Insert your favourite quote here.>
Erik Trulsson
ertr1013@student.uu.se



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071114151826.GA51943>