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