On Tue, Jul 11, 2006 at 08:19:34PM -0400, Dave Rutherford wrote: > On 7/11/06, Cai Qian <[EMAIL PROTECTED]> 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 _______________________________________________ Bug-bash mailing list Bug-bash@gnu.org http://lists.gnu.org/mailman/listinfo/bug-bash