On Tue, Jan 31, 2006 at 09:26:21PM +0000, michael wrote: > On Tue, 2006-01-31 at 10:16 -0500, Juergen Fiedler wrote: > > On Tue, Jan 31, 2006 at 02:26:27PM +0000, michael wrote: > > > Presuming I have a file setEnvVars.sh that I wish to source, > > > . path/setEnvVars.sh > > > How do I, within the script, determine the actual directory within which > > > the setEnvVars.sh file sits? The sourcing seems to disallow me access to > > > $0 etc > > > > > > thanks, M
Hi Michael,
perhaps ${BASH_ARGV[0]} can help you?
] [EMAIL PROTECTED]:~/tmp$ cat ../X.sh
] #!/bin/bash
] set | grep BASH_ARG
] [EMAIL PROTECTED]:~/tmp$ ../X.sh
] BASH_ARGC=()
] BASH_ARGV=()
] [EMAIL PROTECTED]:~/tmp$ . ../X.sh
] BASH_ARGC=([0]="1")
] BASH_ARGV=([0]="../X.sh")
] [EMAIL PROTECTED]:~/tmp$ cd ..
] [EMAIL PROTECTED]:~$ cd tmp
] [EMAIL PROTECTED]:~/tmp$ . ../X.sh
] BASH_ARGC=([0]="1")
] BASH_ARGV=([0]="../X.sh")
BASH_ARG[CV] carry the argument lists of the subroutine calls currently on
the execution stack - and 'source' (or '.') qualifies as a subroutine, so
its argument (the filename to be sourced) is on the stack. This, in combination
with $(pwd), should be sufficient to locate the sourced file.
HTH,
Jan
--
Jan C. Nordholz
<jckn At gmx net>
signature.asc
Description: Digital signature

