Eryk Sun <[email protected]> added the comment:
> it might be nice if it's possible to give some sort of useful
> warning/error when this happens -- perhaps say that specifying
> both shell=True and executable="..." isn't supported on Windows?
The `shell` parameter is documented as follows for Windows:
On Windows with shell=True, the COMSPEC environment variable
specifies the default shell. The only time you need to specify
shell=True on Windows is when the command you wish to execute is
built into the shell (e.g. dir or copy). You do not need
shell=True to run a batch file or console-based executable.
It wouldn't hurt to clarify that the COMSPEC shell has to support `/c`. This is
required by CreateProcessW(), which uses COMSPEC to run BAT and CMD files.
The discussion about using `executable` with `shell` could be extended for
Windows. But this would also require new behavior. For example:
Original:
if shell:
startupinfo.dwFlags |= _winapi.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = _winapi.SW_HIDE
comspec = os.environ.get("COMSPEC", "cmd.exe")
args = '{} /c "{}"'.format (comspec, args)
Proposed:
if shell:
startupinfo.dwFlags |= _winapi.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = _winapi.SW_HIDE
if executable is not None:
cmd = executable
else:
cmd = os.path.normpath(os.environ.get("COMSPEC", "cmd.exe"))
if "\\" in cmd:
executable = cmd
args = '"{}" /c "{}"'.format(cmd, args)
> if comspec.endswith('sh.exe') or comspec.endswith('sh'):
> args = '{} -c "{}"'.format (comspec, args)
sh is not a valid COMSPEC shell. To use sh automatically, subprocess would have
to support and prefer the SHELL [1] environment variable in Windows -- and in
POSIX for that matter.
---
[1]
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03
----------
nosy: +eryksun
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue40467>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com