system command

Jeff Epler jepler at unpythonic.net
Thu Jun 13 13:42:59 EDT 2002


On Thu, Jun 13, 2002 at 07:19:48PM +0200, Thor wrote:
> Having this code
>  
>   print "source "+root+".in"
>   os.system("source "+root+".in")
> 
> the script does not run the root+".in" file, but copying and pasting the 
> output form teh 1st line work.. what i'm doing wrong? Thanks in advance

It is not a Python problem.  It is the difference between running
something in a shell or a subshell.  The former is like typing
    source $ROOT.in
vs
    sh -c "source $ROOT.in"
the latter will not make any changes to the environment of the parent
shell.  So setting environment variables, creating aliases, etc., won't
work like you'd hoped.

If you want to have a Python program that changes something in the
parent shell's environment, you have to arrange to execute it in the
shell.  For instance,
    source `python print_name_of_file_to_source.py`
or
    eval `python print_shell_code_to_execute.py`

Jeff





More information about the Python-list mailing list