Das obige Skript funktioniert, wenn es in der cygwin-Konsole aufgerufen wird, aber wenn ich versuche, es aus einer Batch-Datei aufzurufen, bekomme ich "Befehl nicht gefunden" für den Befehl date und tar. Ich denke, dass bash.exe PATH nicht eingerichtet hat.
Ich muss dieses Skript aus dieser Batch-Datei ausführen, weil ich das Skript dem Taskplaner hinzufügen möchte.
Wie bereits erwähnt, müssen Sie die Cygwin-Binärdateien zu Ihrem Pfad hinzufügen. Klicken Sie dazu mit der rechten Maustaste auf "Arbeitsplatz", klicken Sie auf "Eigenschaften", dann auf "Erweitert" und dann auf "Umgebungsvariablen".
Erstellen Sie eine neue Umgebungsvariable mit dem Namen "CYGWIN_HOME" und dem Wert "C: \ cygwin" (oder wo auch immer Sie cygwin installiert haben. Der Standardspeicherort ist "C: \ cygwin \"; dies sollte wahrscheinlich für Sie funktionieren).
Bearbeiten Sie dann die Umgebungsvariable "PATH", und führen Sie die folgenden Schritte bis zum Ende durch:
;% CYGWIN_HOME% \ bin;% CYGWIN_HOME% \ sbin;% CYGWIN_HOME% \ usr \ bin;% CYGWIN_HOME% \ usr \ sbin;% CYGWIN_HOME% \ usr \ lokal \ bin;% CYGWIN_HOME% \ usr \ local \ sbin
Schließen Sie die Eingabeaufforderung, und öffnen Sie sie erneut. Die Cygwin-Binärdateien sollten jetzt verfügbar sein. Sie können dies überprüfen, indem Sie "which bash" eingeben. Es sollte den Speicherort Ihrer ausführbaren Bash-Datei melden.
Wenn dieses Skript von einer Windows-Befehlsshell aufgerufen wird, führt die erste Zeile zu einem Fehler, da #!/bin/bash
kein anerkannter Windows-Befehl ist und #
kein gültiges Kommentartrennzeichen in einer Batchdatei ist.
Die Quintessenz ist, dass dieses Skript als normale Batch-Datei und nicht in Cygwins bash ausgeführt wird. Wie von matt b
angegeben, haben Sie wahrscheinlich nicht den ausführbaren Pfad von Cygwin in Ihrer Umgebungsvariablen PATH. Andernfalls kann die Batchdatei die Cygwin-Dienstprogramme nicht finden ( tar
und date
).
Ich hatte gerade dieses Problem.
Das Bearbeiten der Umgebungsvariablen funktioniert großartig. Aber wenn Sie keine Administratorrechte haben, können Sie das nicht tun. In diesem Fall können Sie Ihre Befehle ausführen, indem Sie den absoluten Pfad wie folgt verwenden:
%Vor%Wenn Sie dies tun, funktioniert Ihr Bash-Skript auch, wenn Sie es aus einer Batch-Datei aufrufen.