Si sleep.sh
tiene el shebang #!/bin/sh
y tiene los permisos de archivo adecuados, ejecútelo chmod u+rx sleep.sh
para asegurarse de que esté dentro, $PATH
entonces su código debería funcionar como está:
import subprocess
rc = subprocess.call("sleep.sh")
Si el script no está en la RUTA, especifique la ruta completa, por ejemplo, si está en el directorio de trabajo actual:
from subprocess import call
rc = call("./sleep.sh")
Si el script no tiene shebang, debe especificar shell=True
:
rc = call("./sleep.sh", shell=True)
Si el script no tiene permisos ejecutables y no puede cambiarlo, por ejemplo, al ejecutarlo os.chmod('sleep.sh', 0o755)
, puede leer el script como un archivo de texto y pasar la cadena al subprocess
módulo en su lugar:
with open('sleep.sh', 'rb') as file:
script = file.read()
rc = call(script, shell=True)