bug-bash
[Top][All Lists]
Advanced

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

Re: PATH and $0


From: Cai Qian
Subject: Re: PATH and $0
Date: Thu, 13 Jul 2006 00:16:11 +0100

Hi,

On 7/12/06, Stephane Chazelas <Stephane_Chazelas@yahoo.fr> wrote:
On Tue, Jul 11, 2006 at 08:19:34PM -0400, Dave Rutherford wrote:
> On 7/11/06, Cai Qian <loricai@gmail.com> 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


Yes, $0 always has full path, even if I am using alias. It is a
problem in my side anyway.

Thanks,
Qian




reply via email to

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