2010-03-15 07:34:42 +0000 2010-03-15 07:34:42 +0000
68
68

Jak wykonać plik .sh w systemie Windows?

Kiedy próbuję wykonać plik(name.sh) w wierszu poleceń przy pomocy polecenia ./name.sh , dostaję błąd, że:

“.” nie jest rozpoznawany jako wewnętrzna lub zewnętrzna komenda, plik operacyjny lub wsadowy

proszę o pomoc w wykonaniu pliku .sh

Odpowiedzi (15)

76
76
76
2010-03-15 07:58:46 +0000

You’re on Windows CMD.EXE (from the error message). Używa innej składni do wykonywania poleceń. Będziesz musiał użyć sh name.sh, zakładając, że masz zainstalowany Cygwin lub podobny.

Dla wyjaśnienia, Windows nie ma wbudowanego narzędzia do obsługi plików .sh. Aby uruchomić takie narzędzie, musisz zainstalować inne narzędzie, takie jak Cygwin .

13
13
13
2010-03-15 13:48:44 +0000

Próbujesz uruchomić polecenie Linuksa w Windows Command Prompt.

W Linuksie ukośnik do przodu jest separatorem ścieżek. W systemie Windows odwrotny ukośnik jest separatorem ścieżek, a ukośnik w przód zazwyczaj wskazuje argument.

Dlatego Windows uważa, że próbujesz uruchomić polecenie o nazwie “.” i przetworzyć je na argument “/name.sh”. Właściwą konwencją byłoby “.\name.sh”. Dodatkowo Windows automatycznie przeszuka aktualny katalog w poszukiwaniu twojej komendy, więc możesz po prostu wpisać “name.sh”.

Następnym problemem, przed którym staniesz, jest to, że Windows nie wie, co to jest skrypt sh, znów jest to sprawa Linuksa. Możesz rozwiązać ten problem instalując Cygwina, jeśli naprawdę chcesz lub potrzebujesz uruchomić skrypt sh.

Jednak sądząc po jednym z Twoich poprzednich komentarzy, równie dobrze możesz zmienić nazwę skryptu na name.bat i usunąć linię “#!/bin/sh”. Teraz masz plik Batch, który Windows powinien zrozumieć. Możesz przeczytać więcej o plikach wsadowych tutaj .

11
11
11
2010-11-18 15:46:30 +0000

Alternatywnie możesz przejść na ciemną stronę i zainstalować Linuksa. Z prompu:

sh runide.sh

lub

sudo sh runide.sh

Twój program będzie działał i będziesz miał lepszy system.

9
9
9
2017-04-09 18:58:10 +0000

Best solution in my opinion:

  • Download and install .git for Windows

  • Right click desktop and say “git bash here ”

  • Execute your script like in unix

  • Done!

Caution: Wiele komend nie zadziała na oknach! Ale mimo to, wiele podstawowych rzeczy będzie działać.

Jeśli potrzebujesz tego skryptu regularnie, możesz stworzyć skrót (np. na swoim pulpicie):

  • Utwórz skrót do mintty.exe na swoim pulpicie

  • Dodaj 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'

5
5
5
2011-08-16 22:52:50 +0000

Próbujesz uruchomić swój samochód na soku pomarańczowym zamiast na benzynie. Windows współdzieli podobne komendy 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 w postaci maszyn DEC PDP-x.

Jeśli chcesz natychmiastowej gratyfikacji, musisz zainstalować środowisko, które zapewnia “sh. exe” lub “csh.exe” albo “bash.exe” (tsh.exe anyone?)

Alternatywnie, jeśli znasz komendy skryptów uniksowych, bardzo dobrze, a znasz komendy Windows .cmd i .bat, bardzo dobrze, możesz przetłumaczyć plik .sh na plik .bat lub .cmd. Mimo to, często spotykasz więcej programów w stylu uniksowym, które nie mają odpowiednika w systemie Windows -grep, sed, vi, emacs, itp. Tak więc, wezwanie do zainstalowania CygWin (nie minimalistycznego) - tylko po to, by uzyskać powłokę i narzędzia uniksowe. Umieść go na dysku flash, na te specjalne okazje.

3
3
3
2012-05-28 23:19:47 +0000

Ktoś powiedział coś o MS-DOS używającym / dla poleceń i Ktoś powiedział coś o MS-DOS używającym/` dla poleceń i dla ścieżek. Jest to nieco mylące. Spójrz na mój przykład:

C:\myfoo\foo\>cd../.. 
C:\myfoo\foo\>cd..\..

Nie ma żadnej różnicy w skutkach. Yes, it is not true for all operations - the actual answer is simply No, or without Cygwin or SSHD you can’t.

I only know because I stupidly spent half a day trying to figure out what if then fi and eval, exec do with -Djava.something when called.

2
2
2
2015-07-20 16:24:31 +0000

Użyj Githuba dla Windows. Zawiera on wszystkie pliki wykonywalne środowiska Unix. https://github-windows.s3.amazonaws.com/GitHubSetup.exe

1
1
1
2014-05-13 22:05:11 +0000

Znalazłem inne i proste rozwiązanie, zwane UnixUtil .

Pobierz i rozpakuj je na dysk C:. Ustaw zmienną środowiskową path na C:\UnixUtils\usr\local\wbin.

To jest ważne. NIE ustawiaj ścieżki do C:\UnixUtils\bin

1
1
1
2018-05-01 16:06:51 +0000

To jest stary wątek, ale dla tych, którzy mają Windows 10. Wystarczy otworzyć funkcje okien z panelu sterowania ‘Włącz lub wyłącz funkcje systemu Windows’

Wybierz funkcję ‘Podsystem Windows dla Linuksa’. Po zainstalowaniu, masz ‘Bash’ i możesz nawet skonfigurować natywne serwery Linuksa w bashu. Oczywiście, polecenie sh, w bashu, również działa.

1
1
1
2016-12-27 10:39:14 +0000

Dla kompletności chcę wspomnieć o nowej funkcji “Podsystem Windows dla Linuksa” dla Windows 10. Szczegóły są opisane w http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/

Zauważ, że wymaga ona aktywacji przełącznika “Tryb deweloperski” i włączenia opcji “Podsystem Windows dla Linuksa (Beta)”.

Dla siebie sam stwierdziłem, że instalacja Git dla Windows (której i tak używam) jest wystarczająca.

0
0
0
2012-08-31 15:16:38 +0000

Jeśli masz w domu (lub pracy) skrzynkę z Linuksem i podłączyłeś ją do tej samej sieci, a ta jest bezpieczna, może to zrobić sztuczkę:

  1. Zrób udział w folderze w systemie Windows (dość proste, ale upewnij się, że sieć jest bezpieczna przed intruzami).
  2. Zamontuj go w Linuksie z mount //WinMachine/Share LinuxFolder (IIRC, i wymaga Samba ).
  3. Używając czegoś w rodzaju PuTTY , zaloguj się zdalnie do tej skrzynki w Linuksie.
  4. Wykonaj swoją komendę w zamontowanym folderze.
0
0
0
2010-03-15 13:46:42 +0000

Ok, jest w tym wiele złego - rzuć #!/bin/sh, i zmień rozszerzenie na nietoperza, i może zadziałać z kilkoma innymi poprawkami. Wtedy możesz po prostu przywołać go po nazwie pliku.

Składnia uniksowego skryptu powłoki i pliku wsadowego Windows nie są do siebie zbyt podobne. cygwin, lub mnóstwo zabawy z unxutilsami może zrobić coś, co zadziała w obu przypadkach, ale jeśli nie masz pewności, że środowisko jest zawsze takie samo, nie jest to warte bólu głowy.

0
0
0
2016-08-25 07:34:59 +0000

Chociaż istniejące tu odpowiedzi były wtedy poprawne, Windows 10 does teraz opcjonalnie zawiera zmodyfikowaną wersję Ubuntu z pełną powłoką bash .

Po uczynieniu skryptu wykonywalnym, skrypty mogą być uruchamiane w zwykły sposób z wnętrza basha, np.:

chmod +x myscript.sh
./myscript.sh

Jeśli chcesz uruchomić skrypt bezpośrednio z Windows, możesz utworzyć skrót w tym samym katalogu i ustawić “Cel” na coś w rodzaju:

C:\Windows\System32\bash.exe -c "./myscript.sh"

Jeśli ścieżka skryptu jest związana z lokalizacją skrótu (jak w powyższym przykładzie) upewnij się, że pole “Start in” jest również puste.

0
0
0
2015-11-23 11:57:56 +0000

Aby uruchomić skrypt powłoki z okien. Najpierw użyj komendy : dos2unix, następnie możesz użyć swojej normalnej komendy : sh runide.sh

To się uda.

0
0
0
2010-03-15 07:55:19 +0000

Możliwe, że problem tkwi w pliku name.sh - próbujesz użyć komendy ., ale próbuje ona uruchomić rodzaj powłoki (np. csh, jak sądzę), w której nie jest to poprawna komenda.

Więc: czy name.sh zaczyna się od poprawnego #!/bin/sh (jeśli rzeczywiście próbujesz uruchomić sh)?