build.sh 文件权限被拒绝。

91
$ ./build.sh --quiet verify

/home/travis/build.sh: line 59: ./build.sh: Permission denied. 

The command "./build.sh --quiet verify" exited with 126. 

在此输入图片描述


你能展示一下 build.sh 文件的权限吗? - lvthillo
第59行是什么? - Robby Cornelissen
不知道是因为在travis-ci.org上存在/home/travis/build.sh文件。 - Amit Kumar
4个回答

177

看起来你需要在文件build.sh中添加执行权限。请尝试在您自己的机器上执行以下命令:

git update-index --add --chmod=+x build.sh
git commit -m 'Make build.sh executable'
git push

14
自2007年以来我就一直在使用git,这是我第一次看到这种解决方案。慢慢鼓掌 - deepelement
1
“chmod +x build.sh && git add build.sh”这种方式有什么问题吗? - Mateen Ulhaq
4
即使使用 Git Bash,该方法在 Windows 上也不起作用。因此,您需要将其添加到 Git 历史记录中,然后调整索引以保存权限。 - alsami
2
在运行git commit之前,我运行了git status,它显示相同的文件被跟踪和未跟踪。我提交了并且一切正常,但下次我执行git add时,权限就丢失了。 - April Polubiec
嘿,@AprilPolubiec 你是如何解决这个问题的?因为我也遇到了同样的问题。 - Rupesh
显示剩余4条评论

67
您可以通过将这些行添加到.travis.yml文件中来授予所需的权限。
before_install:
  - chmod +x build.sh

19

使用bash运行脚本

另一种选择是使用bash运行脚本,这将省去修改文件权限的需要。

bash path/to/file.sh

或者:

sh path/to/file.sh

请注意

在这种情况下,你并没有执行脚本本身,而是在执行bashsh,然后由它们来运行脚本。因此,脚本不需要是可执行的。

明白吗?


有没有理由想要运行bash而不是脚本?两种方式有什么好处吗? - Josh
这只是一种有用的方式,可以省去修改文件权限的步骤。(在我的Mac上,我需要sudo才能更改文件权限。在Travis-CI上,您不能始终使用sudo。我需要一种在两者上都能正常运行测试的方法。手动在本地更改文件权限似乎不是最好的方式...)@Josh - Jesse van der Pluijm

11

只需在包含build.sh文件的路径下运行

chmod +x build.sh


谢谢,这是唯一对我有效的方法。 - Katya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接