[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 <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