2013-05-29 18 views
1

在下面的脚本(保存为script.sh):为什么sh shbang不起作用?

#!/bin/sh 
cd $MY_PYTHON_WORKING_DIRECTORY 
python script1.py 
python script2.py 

然后,当我试图在我的bash shell中运行命令script.sh,我得到了错误bash: script.sh: command not found。为什么这不能按预期工作?如果任何脚本的第一行以前缀#!开头,则该行上的以下路径将被解释为命令,对吗?为了您的信息,即使我将第一行更改为#!/bin/bash,仍然发生同样的错误。如果我运行的脚本为sh script.shbash script.sh,那么脚本按预期运行。

有没有什么办法通过点击script.sh来运行脚本?

一个问题,shbash之间,我应该使用?我在OS X 10.8上,我的默认shell目前设置为bash,但我不知道要使用哪一个。

谢谢。

+0

您可以使用'./ script.sh'执行它。它会检查第一行,以知道哪个二进制文件会执行它,在这种情况下是'/ bin/sh'。 – fedorqui

+0

很可能该脚本不在$ PATH中的目录中。 – cdarke

+0

当我执行它时,我收到了一个权限错误。然后尝试用'sudo'运行它,但它仍然不起作用,因为'sudo'本身被解释为一个命令。所以我改变了权限为了执行它没有'sudo',然后脚本工作。但我不得不改变权限时,我想执行一些文件没有指定任何命令? – Blaszard

回答

2

首先,使脚本可执行:

chmod u+x script.sh 

其次,当前目录是不是在你的$ PATH。因此,您必须使用路径运行脚本(相对已足够):

./script.sh