2009/11/23 Rudolf Sykora <[email protected]>:
> Hello,
>
> If I have an rc script and I don't specify any rfork in it, then the
> namespace and the environment should be shared.
> So, having an 'a' script
>
> #!/bin/rc
> a = hello
> cd c #later on...
>
> and a 'b' script:
>
> #!/bin/rc
> a
> echo $a
>
> and running the 'b' script, I'd expect that the 'a' variable would be set to
> 'hello' and written out. But it does not work like that, thanks to some
> caching or what. How should the 'b' script, or whatever, be corrected so
> that it work?
yes, rc caches the values of its environment variables
to avoid reading all the values after every command is run.
if you want to re-get the value of an environment variable,
you can do:
ifs=() var=`{cat /env/var}
> Further, I am now a bit puzzled about whose property the 'current directory'
> is. Why isn't the directory changed to 'c' after runing either the 'a' or
> 'b' script? Is this always a local property of each shell?
in plan 9 the current working directory is per-process
(inferno is different here - it's part of the current name space).