我遇到以下问题:
我有这个简单的脚本,叫做 test.sh:
#!/bin/bash
function hello() {
echo "hello world"
}
hello
当我从 shell 运行它时,我得到了预期的结果:
$ ./test2.sh
hello world
但是,当我尝试从 Python (2.7.?) 运行它时,我得到以下信息:
>>> import commands
>>> cmd="./test2.sh"
>>> commands.getoutput(cmd)
'./test2.sh: 3: ./test2.sh: Syntax error: "(" unexpected'
我相信它以某种方式从“sh”而不是 bash 运行脚本。我是这么认为的,因为当我使用 sh 运行它时,我会收到相同的错误消息:
$ sh ./test2.sh
./test2.sh: 3: ./test2.sh: Syntax error: "(" unexpected
此外,当我从 python 运行带有前面“bash”的命令时,它可以工作:
>>> cmd="bash ./test2.sh"
>>> commands.getoutput(cmd)
'hello world'
我的问题是:为什么 python 选择使用 sh 而不是 bash 运行脚本,尽管我#!/bin/bash
在脚本的开头添加了这一行?我怎样才能使它正确(我不想在python中使用前面的'bash',因为我的脚本是由我无法控制的远程机器从python运行的)。
谢谢!