Hier einige grundlegende Informationen zu Unix. Es werden nicht viele "El Capitan" -spezifische Details bereitgestellt, aber sie sollten nicht benötigt werden, um die Dinge zum Laufen zu bringen. (Ich verstehe, dass ein Upgrade auf "El Capitan" die Dinge kaputt gemacht hat. Vielleicht hat es das geändert, was sich in Ihrem Pfad befindet, oder es hat einige Berechtigungen geändert. Nachfolgend finden Sie Details dazu, wie Sie Dinge zum Laufen bringen.
In DOS ist eine Batch-Datei eine Textdatei, die mit ".BAT" endet (ohne Berücksichtigung der Groß- und Kleinschreibung, daher würde ".bat" auch funktionieren). Microsoft Windows folgt der DOS-Tradition. Jede Zeile in der Batch-Datei ist ein Befehl, der vom Befehlsinterpreter ausgeführt wird.
Unter Unix, einschließlich Mac OS X, sollte eine ordnungsgemäße "Shell-Skript" -Datei einen ordnungsgemäßen Header und ordnungsgemäße Berechtigungen haben. Nach dem Header ist dann jede Zeile in der Batch-Datei ein Befehl, der vom Befehlsinterpreter ausgeführt werden soll.
Beachten Sie, dass diese Beschreibungen größtenteils gleich sind. Hauptsächlich ist der größte Teil der Skriptdatei nur eine Liste der auszuführenden Befehle. Befehle, die zwischen DOS und Unix gleich sind, wie "cd .." oder die Namen der ausführbaren Dateien innerhalb des PFADS, funktionieren möglicherweise mit beiden Dateitypen gleich gut.
Wenn Sie eine Unix-Skriptdatei hatten, die besagte:
#!/bin/sh
@Echo Off
echo hello
cd .
more < readme.txt
Dann würde die erste Zeile der Datei unter DOS / Windows einen harmlosen Fehler verursachen, die zweite Zeile der Datei würde unter Unix eine harmlose Fehlermeldung verursachen, und der Rest der Datei könnte in beiden Umgebungen identisch funktionieren.
Ob dies tatsächlich für Sie funktioniert oder nicht, hängt möglicherweise stark von den von Ihnen verwendeten Befehlen ab. Beispielsweise kann " cd bin
" mit beiden Umgebungen gut gearbeitet werden, aber DOS / Windows verwendet einen Backslash als Verzeichnistrennzeichen, während Unix einen Schrägstrich verwendet. Daher funktionieren einige Befehle möglicherweise nicht richtig.
Wir können am besten vorhersagen, wie gut Ihre bestimmte Stapeldatei funktionieren würde oder nicht, wenn wir den Inhalt der Stapeldatei kennen. Daher fragte Barlops Kommentar nach dem Inhalt der Batch-Datei.
Zu Ihrer Frage (aus einem Ihrer Kommentare), welche Erweiterung verwendet werden soll: Unter DOS / Windows lautet die Antwort ".BAT" (Kleinbuchstaben sind in Ordnung, daher ist ".bat" auch in Ordnung.) Die gebräuchlichsten Standards sind "none" (keine Erweiterung) oder " .sh
". In Unix spielt die Erweiterung jedoch keine große Rolle. Entscheidend ist, ob die Datei über die erforderlichen Berechtigungen verfügt und möglicherweise mit dem entsprechenden Header beginnt. Stellen Sie also sicher, dass diese Dinge richtig sind. (Die Kopfzeile ist die erste Zeile in meinem vorherigen Beispiel. Die Berechtigungen können mit "chmod a+x filename.bat
msgstr "" "aber natürlich den tatsächlichen Speicherort des Dateinamens angeben.) Wenn Sie die Datei unter Unix ausführen, stellen Sie sicher, dass Sie den gesamten Dateinamen der Skriptdatei einschließlich der Erweiterung" .bat "angeben. (Wenn Sie nicht möchten Dazu erstellen Sie einfach einen Symlink, wobei ein Symlink mit dem Namen "gonow" auf "gonow.bat" zeigt (oder was auch immer angemessen ist).
Die andere Möglichkeit, dies unter Unix zu tun, besteht darin, die .BAT-Datei in einer anderen DOS-ähnlichen Software auszuführen. zB COMMAND.COM in Wine oder CMD.EXE in WINE oder andere Wine-Varianten wie Crossover oder andere Software wie DOSBox oder DOSemu. Wenn Sie diese Software verwenden, die so konzipiert ist, dass sie wie DOS funktioniert, kann diese Software die Datei möglicherweise ausführen, ohne dass Sie die Erweiterung ".bat" angeben müssen.
Eine andere Alternative kann darin bestehen, einfach eine Shell-Skriptdatei zu verwenden, in der Java ausgeführt wird (da der Inhalt der Batch-Datei, die an anderer Stelle erwähnt wird, die Ausführung von Java anzeigt), und den Versuch zu ignorieren, eine Datei zu verwenden, die mit der Erweiterung ".bat" endet. (Es wäre also keine .bat-Datei, sondern ein Shell-Skript oder ein symbolischer Link.)