Запустить BASH встроенные команды в Python?

Есть ли способ запустить встроенные команды BASH из Python?

Я пробовал:

subprocess.Popen(['bash','history'],shell=True, stdout=PIPE)

subprocess.Popen('history', shell=True, executable = "/bin/bash", stdout=subprocess.PIPE)

os.system('history')

и многих его вариаций. Я хотел бы запустить history или fc -ln.

Ответы

Ответ 1

Наконец-то я нашел решение, которое работает.

from subprocess import Popen, PIPE, STDOUT
shell_command = 'bash -i -c "history -r; history"'
event = Popen(shell_command, shell=True, stdin=PIPE, stdout=PIPE, 
    stderr=STDOUT)

output = event.communicate()

Спасибо всем за вход.

Ответ 2

subprocess.Popen(["bash", "-c", "type type"])

это вызывает bash и сообщает bash запустить строку type type, которая запускает встроенную команду type в аргументе type.

вывод: type is a shell builtin

часть после -c должна быть одной строкой. это не сработает: ["bash", "-c", "type", "type"]