On Tue, 20 Dec 2005, Steve Holden wrote: > Mike Meyer wrote: >> Terry Hancock <[EMAIL PROTECTED]> writes: >> >>> On Tue, 20 Dec 2005 05:35:48 -0000 >>> Grant Edwards <[EMAIL PROTECTED]> wrote: >>> >>>> On 2005-12-20, [EMAIL PROTECTED] <[EMAIL PROTECTED]> >>>> wrote: >>>> >>>>> I have csh script that calls a bunch of python programs and I'd like >>>>> to use env variables as kind of a global variable that I can pass >>>>> around to the pythong scripts. >>>> >>>> You can't change the environment of the parent process. >>> >>> There is an evil trick, however: >>> >>> Instead of setting the environment directly, have the python program >>> return csh code to alter the environment the way you want, then call >>> the python code by "sourcing" its output: >>> >>> source `my_script.py` >> >> Does this actually work? It looks to me like you need two levels: >> my_script.py creates a file, then outputs the name of the file, as the >> csh source command reads commands from the file named as an argument. >> >> To be able to output the commands directly, you'd need to use the eval >> command, not the source command. > > I suspect the trick that Terry was thinking of was eval, not source. You are > correct in saying he'd need to create a file to source.
True. The downside of eval is that it doesn't (well, in bash, anyway) handle line breaks properly (for some value of 'properly') - it seems to treat them as linear whitespace, not line ends. I was about to suggest: source <(my_script.py) As a way to use source to run the script's output, but that seems not to work. I think <() might be a bashism anyway. tom -- Hit to death in the future head -- http://mail.python.org/mailman/listinfo/python-list