• Advertisement
Sign in to follow this  

How to use the same system shell all the time in python

This topic is 1737 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,

 

I need to run several shell commands from Python. How do I use all the time the same shell?

Because if I use  system in such manner:

 

 

from os import system

system("set x=0") #setting a system variable
system("echo %x%") #it does not exist here anymore
 

 

 

after first use the defined variable does not exist anymore.

How to workaround this?

 

Thanks,

 

Share this post


Link to post
Share on other sites
Advertisement

after first use the defined variable does not exist anymore.

 

When you call os.system, a new child process with a new environment is created. See this discussion for more details: http://stackoverflow.com/questions/1506579/why-doesnt-os-systemset-foo-bar-work

 

A workaround would be to separate your shell commands with new lines (\n) or write a bash that you run from your python script using the subprocess module.

Share this post


Link to post
Share on other sites

Thanks for answers.

Somehow this command with new line operator does not work, but one can join commands with & sign.

Share this post


Link to post
Share on other sites

It works fine for me under Ubuntu 12.10, Python 2.7.3.

 

 What is the output of the following script?

 

import os
print os.system("x=15\necho $x")

 

I have the following output:

  

15
0
Edited by renega_666

Share this post


Link to post
Share on other sites

As this what I am doing is a multiplatform installer I finally decided to use Batch/Shell files, so system command calls only a file which has everything inside. That's even better solution, than trying to concatenate all commands. It seems a bit more flexible now as one can put many scripts in a source directory and run them one by one.

Edited by Misery

Share this post


Link to post
Share on other sites

Glad you found a solution that suits your needs.

 

May I ask you why you want to create a multiplatform installer? I ask this because it is usually advised to use the targeted system's package manager (Windows Installer on Windows, Debian and RPM on GNU/Linux, PyPi if you want to distribute a python package, and so on...)

Edited by renega_666

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement