bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Is there a special variable for the directory where the script is in


From: Chris F.A. Johnson
Subject: Re: Is there a special variable for the directory where the script is in?
Date: Thu, 11 Feb 2010 20:34:09 -0500 (EST)
User-agent: Alpine 2.00 (LMD 1167 2008-08-23)

On Thu, 11 Feb 2010, Eric Blake wrote:

> According to Chris F.A. Johnson on 2/11/2010 4:23 PM:
> > On Fri, 12 Feb 2010, Peng Yu wrote:
> > 
> >> $0 gives the file name of the script. I could use several shell
> >> command to get the directory where the script is in. But I'm wondering
> >> if there is an easy-to-use variable that refers to the directory where
> >> the script is in?
> > 
> >   $0 normally gives the full path to the file, so: "${0%/*}"
> 
> No, $0 normally gives the argv[0], which matches how the file was invoked.

   Or, if it was found in $PATH, the full path to the file.

   That is how scripts are "normally" executed.

>  If it was invoked by absolute path (or even an anchored invocation, such
> as ./script), then you can compute it yourself.
>
>  Otherwise, you have to
> recreate the PATH walk in your script to determine where the script was
> eventually located, and hope that the script was not invoked in such a way
> that argv[0] does not match the name of the script being run.
> 
> Look at any configure script generated by autoconf for a sample of how
> complex it can be to portably locate $myself.

   And, of course, there is rarely a good reason to need to know the
   location.

-- 
   Chris F.A. Johnson                          <http://cfajohnson.com>
   ===================================================================
   Author:
   Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)
   Pro Bash Programming: Scripting the GNU/Linux Shell (2009, Apress)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]