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>

Attachment: signature.asc
Description: Digital signature

Reply via email to