(original) (raw)

On Sun, Jan 7, 2018 at 8:17 AM, Christian Tismer <tismer@stackless.com> wrote:
As a side note: In most cases where shell=True is found, people
seem to need evaluation of the PATH variable. To my understanding,

\>>> from subprocess import call
\>>> call(("ls",))

works in Linux, but (with dir) not in Windows. But that is misleading
because "dir" is a builtin command but "ls" is not. The same holds for
"del" (Windows) and "rm" (Linux).

So I thought that using shell=True was a good Thing on windows,
but actually it is the start of all evil.
Using regular commands like "git" works fine on Windows and Linux
without the shell=True parameter.

Perhaps it would be a good thing to emulate the builtin programs
in python by some shell=True replacement (emulate\_shell=True?)
to match the normal user expectations without using the shell?

That feels like a terrible idea to me. How do you define "normal user expectations" here? If people want shell builtins they should just use shell=True. (Also note IIUC there are several quite different shells commonly used on Windows, e.g. PowerShell.)

--
--Guido van Rossum (python.org/\~guido)