SchlangeПока вам не надо, не берите в голову. Если коротко то subprocess.run() один позволяет сделать то что раньше делалось sp.Popen,sp.call,sp.check_call, os.system и кучей других методов. Т.е. интерфейс стал попроще.
Какая между ними принципиальная разница?
Вы лучше поправьте ваш код. Зачем вы в строку сунули subprocess,os? они там не нужны.
Попробуйте поменять подход. Код работает в точности так как написано в документации. Раз в документации не написано что идет интерпретация bash то ее и нет. Есть в документации пример типа “”“echo ”subprocess.\x1b\x45run\x1b\x46“ | lpr -l ”“” - нету!. Не надо так делать. Берите примеры из документации и подгоняйте под себя. Попытка перенести опыт bash,fortran C++ pascal в питон или любой другой язык должна выполняться с большой осторожностью.