/ / cywin bash script Befehl nicht gefunden, wenn von Batch - Bash, Cygwin aufgerufen

Der Befehl cywin bash script wurde nicht gefunden, wenn er von batch - bash, cygwin aufgerufen wurde

#!/bin/bash
echo "Testing"
cd "/cygdrive/x/Internal Communications/Riccardo/"
filename=htdocs-`date +%A`.tar.gz
tar cvzf $filename "/cygdrive/c/Program Files/Zend/Apache2/htdocs"

Das obige Skript funktioniert, wenn es aufgerufen wirdin der cygwin-Konsole, 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 den PATH nicht eingerichtet hat.

Ich muss dieses Skript von dieser Batchdatei ausführen, weil ich das Skript dem Taskplaner hinzufügen möchte.

Antworten:

9 für die Antwort № 1

Setzen Sie Ihr cygwin bin-Verzeichnis (wahrscheinlich C:cygwinbin) auf Ihrer PATH-Umgebungsvariablen.

Dies würde Ihnen auch den Vorteil geben, Befehle wie tar, ls, rmusw. von einem normalen Konsolenfenster und nicht nur von einer Cygwin-Konsole.


15 für die Antwort № 2

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", das sollte wahrscheinlich für Sie funktionieren).

Editiere dann die Umgebungsvariable "PATH" und führe das Folgende bis zum Ende durch:

;% CYGWIN_HOME% bin;% CYGWIN_HOME% sbin;% CYGWIN_HOME% usrbin;% CYGWIN_HOME% usrsbin;% CYGWIN_HOME% usrlocalbin;% CYGWIN_HOME% usrlocalsbin

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 bash ausführbaren Datei melden.


10 für die Antwort № 3

FWIW, Cygwin hat Cron.

Nennst du dein Skript so?

bash --login -i ./myscript.sh

2 für die Antwort № 4

Wenn dieses Skript von einer Windows-Befehlsshell aufgerufen wird, führt die erste Zeile zu einem Fehler seit #!/bin/bash ist kein Windows-Befehl und # ist kein gültiges Kommentartrennzeichen in einer Batchdatei.

Die Quintessenz ist, dass dieses Skript als normale Batchdatei ausgeführt wird und nicht in Cygwins Bash. Wie von matt b, Sie haben wahrscheinlich nicht den ausführbaren Pfad von Cygwin in Ihrer Umgebungsvariablen PATH. Andernfalls kann die Batchdatei die Cygwin-Dienstprogramme nicht finden (tar und date).


0 für die Antwort № 5

Ich hatte gerade dieses Problem.

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:

/usr/bin/tar cvzf $filename
/usr/bin/cat $filename

Wenn Sie dies tun, funktioniert Ihr Bash-Skript auch, wenn Sie es aus einer Batch-Datei aufrufen.