build.sh 文件的权限被拒绝

Posted

技术标签:

【中文标题】build.sh 文件的权限被拒绝【英文标题】:Permission denied for build.sh file 【发布时间】:2017-06-28 12:54:19 【问题描述】:
$ ./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文件的权限吗? 第 59 行是什么? 不知道,因为 /home/travis/build.sh 文件存在于 travis-ci.org 中 【参考方案1】:

看起来您需要签入具有执行权限的文件build.sh。请在您自己的机器上尝试以下操作:

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

【讨论】:

我从 2007 年开始使用 git,这是我第一次看到这个解决方案。 慢拍 普通的旧 chmod +x build.sh && git add build.sh 有什么问题? @MateenUlhaq 即使使用 git bash 也无法在 Windows 上运行。所以你必须将它添加到 git-history 中,然后调整索引以保存权限。 在运行 git commit 之前,我运行了 git status ,它显示的文件与被跟踪和未跟踪的文件相同。我提交并且很好,但是下次我git added 文件时,权限丢失了。 哇。来自 Windows 世界但在 Azure 中的 Ubuntu 上构建 .NET Core 非常有用。【参考方案2】:

您可以通过将此行添加到 .travis.yml

来授予所需的权限
before_install:
  - chmod +x build.sh

【讨论】:

【参考方案3】:

使用 bash 运行脚本

另一种选择是使用 bash 运行脚本,这样就无需修改文件的权限。

bash path/to/file.sh

或者:

sh path/to/file.sh

注意

在这种情况下,您 执行脚本本身,您正在执行 bashsh 然后 运行脚本。因此脚本不需要是可执行的

有意义吗?

【讨论】:

是否有理由想要运行 bash 而不是脚本?是否有一种方式或另一种方式的好处? 这只是一种无需修改文件权限的有用方法。 (在我的 Mac 上,我需要 sudo 来更改文件权限。在 travis-ci 上,你不能总是使用 sudo。我需要一种方法来运行我的测试,这两者都适用。并且在本地手动更改文件权限似乎没有喜欢最好的方法...)@Josh【参考方案4】:

只需在 build.sh 文件所在的路径运行

chmod +x build.sh

【讨论】:

以上是关于build.sh 文件的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Travis.yml ./gradlew:权限被拒绝

WinSCP:权限被拒绝。错误代码:3来自服务器的错误消息:权限被拒绝[关闭]

对路径的访问被拒绝,怎么解决

访问文件 Android 11 时权限被拒绝

挂载文件时获取权限被拒绝错误

Android写入文件权限被拒绝[重复]