Odpowiedzi:
Jesteś w systemie Windows CMD.EXE (z komunikatu o błędzie). Używa innej składni do wykonywania poleceń. Musisz użyć sh name.sh
, zakładając, że masz zainstalowany Cygwin lub podobny.
Aby to wyjaśnić, system Windows nie ma wbudowanego narzędzia do obsługi plików .sh. Aby uruchomić takie, musisz zainstalować narzędzie innej firmy, takie jak Cygwin .
Próbujesz uruchomić polecenie systemu Linux w wierszu polecenia systemu Windows.
W systemie Linux ukośnik jest separatorem ścieżki. W systemie Windows ukośnik odwrotny jest separatorem ścieżki, a ukośnik do przodu ogólnie wskazuje na argument.
Dlatego system Windows myśli, że próbujesz uruchomić polecenie o nazwie „.” i analizując argument „/name.sh”. Prawidłowa konwencja to „. \ Name.sh”. Ponadto system Windows automatycznie przeszuka bieżący katalog w poszukiwaniu Twojego polecenia, więc możesz po prostu wpisać „name.sh”.
Kolejnym problemem, z którym się spotkasz, jest to, że Windows nie wie, co to jest skrypt sh, znowu jest to kwestia Linuksa. Możesz rozwiązać ten problem, instalując Cygwin, jeśli naprawdę chcesz lub musisz uruchomić skrypt sh.
Jednak sądząc po jednym z poprzednich komentarzy, równie dobrze możesz zmienić nazwę skryptu na name.bat i usunąć wiersz „#! / Bin / sh”. Teraz masz plik wsadowy, który system Windows powinien zrozumieć. Możesz przeczytać więcej o plikach wsadowych tutaj .
Pobierz i zainstaluj .git dla Windows
Kliknij pulpit prawym przyciskiem myszy i powiedz „tutaj git bash”
Wykonaj skrypt jak w Uniksie
Gotowy!
Uwaga: Wiele poleceń nie działa w systemie Windows! Ale nadal wiele podstawowych rzeczy będzie działać.
Jeśli potrzebujesz tego skryptu regularnie, możesz utworzyć skrót (np. Na pulpicie):
Utwórz skrót do mintty.exe
na pulpicie
Edytuj właściwości skrótu i zmień cel (zachowaj ścieżkę):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Próbujesz uruchomić samochód na soku pomarańczowym zamiast benzyny. System Windows udostępnia podobne polecenia przechowywane w plikach .bat lub .cmd ze skryptami powłoki Unix / Linux / zOS Unix Subsystem / * ix, ponieważ te dwie rodziny systemów operacyjnych mają wspólnego przodka maszyn DEC PDP-x.
Jeśli chcesz natychmiastowej gratyfikacji, musisz zainstalować środowisko, które zapewnia program „sh.exe” lub „csh.exe” lub „bash.exe” (czy ktos tsh.exe?)
Alternatywnie, jeśli znasz komendy skryptowe w systemie Unix, bardzo dobrze i znasz komendy plików .cmd i .bat dla systemu Windows, bardzo dobrze możesz przetłumaczyć plik .sh na plik .bat lub .cmd. Mimo to często spotyka się więcej programów w stylu uniksowym, które nie mają odpowiedników w systemie Windows - grep, sed, vi, emacs itp. Zatem wezwanie do zainstalowania CygWin (bez minimalisty) - tylko w celu uzyskania powłoki i Uniksa przybory. Na specjalne okazje umieść go na dysku flash.
Ktoś powiedział coś o MS-DOS używającym /
poleceń i \
ścieżek. Jest to nieco mylące. Spójrz na mój przykład:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
Nie ma różnicy w działaniu. Tak, nie jest to prawdą we wszystkich operacjach - rzeczywista odpowiedź brzmi po prostu Nie , lub bez Cygwin lub SSHD nie możesz.
Wiem tylko, bo głupio spędził pół dnia próbuje dowiedzieć się, co if then fi
i eval
, exec
zrobić z -Djava.something
po nazwie.
Użyj Github dla Windows. Zawiera wszystkie pliki wykonywalne środowiska Unix.
Znalazłem inne i łatwe rozwiązanie o nazwie UnixUtil .
Pobierz i rozpakuj go na dysk C: Ustaw zmienną środowiskową, path
aby uwzględnić C:\UnixUtils\usr\local\wbin
.
To jest ważne. NIE ustawiaj ścieżki naC:\UnixUtils\bin
Dla kompletności chcę wspomnieć o nowej funkcji „Windows Subsystem for Linux” dla Windows 10. Szczegóły opisano w http://www.howtogeek.com/249966/how-to-install-and-use-the-linux- bash-shell-on-windows-10 /
Uwaga: wymaga aktywacji przełącznika „Tryb dewelopera” i włączenia opcji „Podsystem Windows dla systemu Linux (Beta)”.
Dla siebie stwierdziłem, że instalacja Git dla Windows (której i tak używam) jest wystarczająca.
To jest stary wątek, ale dla osób z systemem Windows 10. Wystarczy otworzyć funkcje systemu Windows z panelu sterowania „Włącz lub wyłącz funkcje systemu Windows”
Wybierz funkcję „Podsystem Windows dla systemu Linux”. Po instalacji masz „Bash”, a nawet możesz skonfigurować natywne serwery Linux w bash. Oczywiście działa również polecenie sh w ramach bash.
Możliwe, że problem rzeczywiście występuje w pliku name.sh
- próbujesz użyć .
polecenia, ale próbuje uruchomić rodzaj powłoki (np. csh
Myślę, że), w której to polecenie nie jest poprawne.
Więc: czy name.sh
zaczyna się od poprawnego #!/bin/sh
(jeśli faktycznie próbujesz uruchomić sh
)?
ok, jest w tym DUŻO nie tak - upuść #! / bin / sh i zmień rozszerzenie na bat, a może działać z kilkoma dodatkowymi poprawkami. Następnie możesz po prostu wywołać go również według jego nazwy pliku.
Składnia skryptu powłoki unix i plik wsadowy systemu Windows nie są zbyt podobne. cygwin lub mnóstwo bałaganu z unxutils może stworzyć coś, co zadziałałoby w obu przypadkach, ale jeśli absolutnie nie jesteś pewien, że środowisko jest zawsze takie samo, nie jest to warte bólu głowy
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
Co?! Podejrzewam, że nigdy tego nie próbowałeś ... W systemie Windows nawet najprostsze funkcje bash nie są obsługiwane lub wymagają długiej składni.
Jeśli masz Linux-a w domu (lub w pracy) i podłączony do tej samej sieci, a ta sieć jest bezpieczna, może to załatwić sprawę:
mount //WinMachine/Share LinuxFolder
(IIRC i wymaga Samby ).Aby uruchomić skrypt powłoki z systemu Windows. Najpierw użyj polecenia: dos2unix, a następnie możesz użyć zwykłego polecenia: sh runide.sh
To się uda.
Chociaż dotychczasowe odpowiedzi tutaj były poprawne w momencie, Windows 10 ma teraz ewentualnie zawierać zmodyfikowaną wersję Ubuntu działa pełną powłoki bash .
Po utworzeniu pliku wykonywalnego skrypty można uruchamiać w zwykły sposób z poziomu basha, np .:
chmod +x myscript.sh
./myscript.sh
Jeśli chcesz uruchomić skrypt bezpośrednio z systemu Windows, możesz utworzyć skrót w tym samym katalogu i ustawić „Cel” na coś takiego:
C:\Windows\System32\bash.exe -c "./myscript.sh"
Jeśli ścieżka skryptu zależy od położenia skrótu (jak w powyższym przykładzie), upewnij się, że pole „Rozpocznij w” jest również puste.