[issue24919] Use user shell in subprocess
eryksun
report at bugs.python.org
Mon Aug 24 01:03:32 CEST 2015
eryksun added the comment:
I expect Popen's shell=True option to use the same shell as os.system. The POSIX spec for the [system function][1] requires running sh, as follows:
execl(<shell path>, "sh", "-c", command, (char *)0);
glibc uses "/bin/sh" for the shell path. Modifying the SHELL environment variable doesn't affect the behavior of os.system. I would be surprised if Popen's shell=True had been designed like that. Thankfully it's too late to change this since it could break existing code. ;-)
The story is different on Windows. The CRT's system() prefers the shell that's set in the ComSpec environment variable. So on Windows Popen uses os.environ.get("COMSPEC", "cmd.exe").
[1]: http://pubs.opengroup.org/onlinepubs/9699919799/functions/system.html
----------
nosy: +eryksun
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue24919>
_______________________________________
More information about the Python-bugs-list
mailing list