为什么python允许bash脚本在不可执行的情况下运行?

时间:2017-02-17 17:22:31

标签: python bash pyqt4

我有一个简单的bash脚本运行“apt update”我试图像这样通过python调用它。它运行虽然我没有chmod +x update.sh它。

def updateUsingBash(self):
    p = QtCore.QProcess()
    p.finished.connect(self.onFinished)
    p.start('sh', ['update.sh'])
    p.waitForFinished(-1)

def onFinished(self, exit_code, exit_status):
    print "script finished with exit code :", exit_code

2 个答案:

答案 0 :(得分:3)

执行update.sh。您执行sh传递update.sh作为参数。这使得shupdate.sh解释为shell脚本。

顺便提一下,请注意shbash不完全相同。

答案 1 :(得分:1)

这与python foo.py运行foo.py的方式完全相同,后者不会被标记为可执行文件 - 它只是一个包含脚本文本的数据文件,并且执行的事情分别是pythonsh