2009-11-04 71 views
1

我不是Cygwin的运行,但我有cygwin的ash.exe在我的%PATH%为sh.exe并在%PATH%cygwin1.dllCygwin的Shell脚本

我试图援引一些shell脚本(没有扩展名)使用sh -c shell-script-name但是我得到了“permission denied”错误。如果我运行sh并运行./script,我也会得到这个错误。我有一个正确的#!/ bin/sh shebang行,甚至重命名为.sh或.exe也没有任何作用。我该怎么办?

回答

1

尝试查看Windows权限是否导致问题的一件事是运行Process Monitor并将其筛选为sh.exeshell-script-name。这可能会告诉你,如果你没有特别的权限(例如你可能已经阅读但没有执行权限)。

尝试也运行shell交互方式,即:

c:\>sh 
sh# . ./script  or 
sh# sh -c ./script 

如果这个工程,那么你知道cygwin的部分是否正常工作。另一件要检查的事情是,脚本的行尾是unix,因为这可能会阻止脚本正确执行。

+1

行尾Unix的 ./script失败 。 ./script成功 sh ./script成功 sh -c ./script失败 sh -c脚本失败 – singpolyma 2009-11-04 20:32:51

+0

是否可以在您调用具有更改当前工作目录的效果的sh时使其不会找到脚本?试试'sh -c pwd' – 2009-11-04 21:33:15

+0

我正在运行和@singpolyma完全相同的行为,Procmon告诉我bash正在目录C:\ cygwin \ home \ Mark \ unknown \ Mark中查找失败的案例。这个目录不存在,我不知道为什么bash可能在那里寻找文件。 – Mark 2013-03-21 05:06:04

0

一切为我工作后做:

$ chmod +x script