Berechtigung für Datei build.sh verweigert

71
$ ./build.sh --quiet verify

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

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

Geben Sie hier die Bildbeschreibung ein

Amit Kumar
quelle
Können Sie die Berechtigungen für die Datei build.sh anzeigen?
lvthillo
Was ist in Zeile 59?
Robby Cornelissen
Ich weiß es nicht, weil die Datei /home/travis/build.sh in travis-ci.org existiert
Amit Kumar

Antworten:

117

Sieht so aus, als müssten Sie die Datei build.shmit Ausführungsberechtigungen einchecken . Bitte versuchen Sie Folgendes von Ihrem eigenen Computer aus:

git update-index --add --chmod=+x build.sh
git commit -m 'Make build.sh executable'
git push
joepd
quelle
5
Ich benutze Git seit 2007 und dies ist das erste Mal, dass ich diese Lösung sehe. langsames Klatschen
tiefes Element
1
Was ist los mit einfach alt chmod +x build.sh && git add build.sh?
Mateen Ulhaq
3
@MateenUlhaq, das unter Windows nicht funktioniert, selbst wenn Git Bash verwendet wird. Sie müssen es also zum Git-Verlauf hinzufügen und dann den Index anpassen, um die Berechtigung zu speichern.
Alsami
1
Vor dem Ausführen habe git commitich den Git-Status ausgeführt und es wird dieselbe Datei angezeigt , die verfolgt und nicht verfolgt wird. Ich habe mich verpflichtet und war in Ordnung, aber beim nächsten Bearbeiten git addder Datei gingen die Berechtigungen verloren.
April Polubiec
Beeindruckend. Sehr nützlich aus einer Windows-Welt, aber das Erstellen von .NET Core unter Ubuntu in Azure.
Jedidja
52

Sie können die erforderliche Berechtigung erteilen, indem Sie diese Zeilen zur .travis.yml hinzufügen

before_install:
  - chmod +x build.sh
Lanayx
quelle
11

Führen Sie das Skript mit bash aus

Eine andere Möglichkeit wäre, das Skript mit bash auszuführen. Dadurch müssten die Berechtigungen der Dateien nicht mehr geändert werden.

bash path/to/file.sh

Alternative:

sh path/to/file.sh

Beachten Sie, dass

In diesem Fall sind Sie nicht ausführen das Skript selbst, Sie ausführen bash oder shdie dann läuft das Skript. Daher muss das Skript nicht ausführbar sein .

Sinn ergeben?

Jesse van der Pluijm
quelle
Gibt es einen Grund, warum man Bash anstelle des Skripts ausführen möchte? Gibt es Vorteile auf die eine oder andere Weise?
Josh
Dies ist nur eine nützliche Methode, um das Ändern von Dateiberechtigungen zu vermeiden. (Auf meinem Mac benötige ich sudo, um die Dateiberechtigungen zu ändern. Auf travis-ci kann man sudo nicht immer verwenden. Ich brauchte eine Möglichkeit, um meine Tests auszuführen, die auf beiden funktionieren würden. Und das manuelle Ändern der Dateiberechtigungen vor Ort schien nicht wie der beste Weg ...) @Josh
Jesse van der Pluijm
3

Führen Sie einfach den Pfad aus, in dem sich die Datei build.sh befindet

chmod +x build.sh

Boluwatife Fakorede
quelle