Kiedy próbuję wykonać plik (name.sh) w wierszu polecenia za pomocą polecenia ./name.sh, pojawia się błąd:
„.” nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, plik operacyjny ani plik wsadowy
pomóż mi wykonać plik .sh
windows
shell-script
Broam
źródło
źródło
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 .
źródło
Alternatywnie możesz przejść do ciemnej strony i zainstalować Linuksa. Z pytania:
lub
Twój program uruchomi się, a ty będziesz mieć także lepszy system.
źródło
Moim zdaniem najlepsze rozwiązanie:
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 pulpicieEdytuj 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'
źródło
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.
źródło
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: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
ieval
,exec
zrobić z-Djava.something
po nazwie.źródło
Użyj Github dla Windows. Zawiera wszystkie pliki wykonywalne środowiska Unix.
https://github-windows.s3.amazonaws.com/GitHubSetup.exe
źródło
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 na
C:\UnixUtils\bin
źródło
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.
źródło
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.
źródło
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
)?źródło
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
źródło
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 ).źródło
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.
źródło
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 .:
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:
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.
źródło