Oto kilka podstawowych informacji o Uniksie. Nie podano wielu szczegółów specyficznych dla „El Capitan”, ale nie powinny one być potrzebne, aby wszystko działało. (Rozumiem, że uaktualnienie do „El Capitan” zepsuło. Być może zmieniło to, co jest na twojej ścieżce, lub zmieniło niektóre uprawnienia. Poniżej podano szczegółowe informacje, jak sprawić, by działało.
W DOS plik wsadowy to plik tekstowy, który kończy się na „.BAT” (bez rozróżniania wielkości liter, więc „.bat” również będzie działał). Microsoft Windows jest zgodny z tradycją DOS. Każda linia w pliku wsadowym jest poleceniem do uruchomienia z interpretera poleceń.
W Uniksie, w tym Mac OS X, odpowiedni plik „skryptu powłoki” powinien mieć odpowiedni nagłówek i odpowiednie uprawnienia. Następnie, po nagłówku, każda linia w pliku wsadowym jest poleceniem do uruchomienia z interpretera poleceń.
Zauważ, że te opisy są w większości takie same. Głównie większość pliku skryptu to tylko lista poleceń do uruchomienia. Polecenia, które są takie same między DOS i Unix, takie jak „cd ..” lub nazwy plików wykonywalnych w PATH, mogą działać równie dobrze z oboma typami plików.
Jeśli masz plik skryptu systemu Unix, który mówi:
#!/bin/sh
@Echo Off
echo hello
cd .
more < readme.txt
Wtedy pierwszy wiersz pliku spowodowałby nieszkodliwy błąd w DOS / Windows, drugi wiersz pliku spowodowałby komunikat o błędzie harmelssa w Uniksie, a reszta pliku mogłaby działać identycznie w obu środowiskach.
To, czy to faktycznie zadziała, czy nie, może w dużej mierze zależeć od używanych poleceń. Na przykład „ cd bin
” może działać dobrze w obu środowiskach, ale DOS / Windows używa odwrotnego ukośnika jako separatora katalogów, podczas gdy Unix używa ukośnika. Dlatego niektóre polecenia mogą nie działać dobrze.
Najlepszym sposobem, aby przewidzieć, jak dobrze Twój konkretny plik wsadowy będzie działał dobrze, czy nie, jest to, że znamy jego zawartość. Dlatego komentarz Barlopa zapytał o zawartość pliku wsadowego.
Jeśli chodzi o twoje pytanie (z jednego z twoich komentarzy), którego rozszerzenia użyć: w systemie DOS / Windows odpowiedź brzmi „.BAT” (dowolna ilość małych liter jest w porządku, więc „.bat” też jest w porządku.) W Uniksie najpopularniejsze standardy to „brak” (bez rozszerzenia) lub „ .sh
”. Jednak w Uniksie rozszerzenie naprawdę nie ma większego znaczenia. Liczy się to, czy plik ma niezbędne uprawnienia i ewentualnie zaczyna się od odpowiedniego nagłówka. Upewnij się więc, że te rzeczy są prawidłowe. (Nagłówek to pierwszy wiersz pokazany w mojej poprzedniej próbce. Uprawnienia można ustawić za pomocą „chmod a+x filename.bat
”, ale oczywiście określ rzeczywiste położenie nazwy pliku.) Gdy plik jest uruchamiany w systemie Unix, pamiętaj o podaniu całej nazwy pliku skryptu, w tym rozszerzenia„ .bat ”. (Jeśli nie podoba ci się robiąc to, po prostu stwórz dowiązanie symboliczne, mając dowiązanie symboliczne o nazwie „gonow” wskazuje na „gonow.bat” (lub cokolwiek innego, co jest odpowiednie).
Innym sposobem na zrobienie tego w Uniksie jest uruchomienie pliku .BAT z innego oprogramowania podobnego do DOS. np. COMMAND.COM w Wine, a może CMD.EXE w WINE, lub inne warianty Wine, takie jak Crossover, lub inne oprogramowanie, takie jak DOSBox lub DOSemu. Jeśli to zrobisz, użyj tego oprogramowania, które jest zaprojektowane tak, aby działało podobnie do DOS, to oprogramowanie może być w stanie uruchomić plik bez konieczności określania rozszerzenia „.bat”.
Inną alternatywą może być po prostu użycie pliku Shell Script, który uruchamia Javę (ponieważ zawartość pliku wsadowego, wspomnianego gdzie indziej, pokazuje, że Java jest uruchomiona) i zignorować próbę użycia pliku, który kończy się rozszerzeniem „.bat”. (Więc nie byłby to plik .bat, ale byłby skryptem powłoki lub dowiązaniem symbolicznym).