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


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

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

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?


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.