[TriLUG] bash script question

trilug@trilug.org trilug@trilug.org
Mon, 20 Aug 2001 17:28:26 -0400 (EDT)


On Mon, 20 Aug 2001, Chris Merrill wrote:

> I have a number of scripts that run various development 
> tasks for me (compile, unit test, etc.).  Each of them
> need to check/set some environment variables before
> doing their work...and they all need to do the same thing
> with those variables.  I tried writing a 'slave' script
> to do this job, but then realized that invoking the slave
> script from within the other scripts would not work,
> since it would simply set the environment in a child
> process...which would then be lost when the slave script
> completes.

Bash (and sh) has a "." command, also called "source", which allows
you to read-in a file as if it were the current script, without executing
as a child processes.  This way you can set the environment like you
describe.

For example, to test my .bashrc I usually do this:
$ . .bashrc

That is a little cryptic so I would suggest using the "source" keyword
instead.  Do "man bash" and search on "source" for the whole scoop.

Hope this helps,
Jeremy

-- 
My software never has bugs. It just develops random features.