bug-bash
[Top][All Lists]
Advanced

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

Re: PATH and $0


From: Stephane Chazelas
Subject: Re: PATH and $0
Date: Wed, 12 Jul 2006 12:07:22 +0100
User-agent: mutt-ng/devel-r562 (Linux)

On Tue, Jul 11, 2006 at 08:19:34PM -0400, Dave Rutherford wrote:
> On 7/11/06, Cai Qian <address@hidden> wrote:
> >I want its full pathname using 'dirname', but it will give me
> >unexpected result on some Linux or Bash versions.
> 
> Well, 'dirname' certainly won't do what you want, but I'm sorry,
> I can't think of a way to get what you need.  (It would be relatively
> easy in 'c'.)  Even /proc/self/* doesn't contain the script's full
> pathname.  Perhaps somebody else knows a better way.
[...]

$0 will always  contain the file path, unless the script was
started as:

bash script.sh

And there's no script.sh in the current directory (in which case
sh/bash will have looked up script.sh in $PATH).

So:

#! /bin/sh -
dir=$(
  cmd=$0
  [ -e "$cmd" ] || cmd=$(command -v -- "$cmd") || exit
  dir=$(dirname -- "$cmd")
  cd -P -- "$dir" && pwd -P
) || exit
# untested

should give you the absolute path of the directory portion of
the script path (unless that directory ends in newline
characters).

-- 
Stephane




reply via email to

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