Jak uruchomić plik .sh w wierszu polecenia systemu Windows?


138

Jak uruchomić plik .sh w wierszu polecenia systemu Windows 7? Zawsze otrzymuję ten błąd, gdy próbuję uruchomić w nim tę linię,

app/build/build.sh

błąd,

'app' is not recognized...

lub,

bash app/build/build.sh

błąd,

'bash' is not recognized...

Jakieś pomysły, co przegapiłem?

Tutaj zrzut ekranu, wprowadź opis obrazu tutaj


6
potrzebujesz cygwin (prawdopodobnie). Próbujesz uruchomić skrypty SHELL (.sh) w systemie Windows i tylko w ten sposób uruchamiam swoje .shpliki w systemie Windows.
ha9u63ar

Odpowiedzi:


55

Komunikat o błędzie wskazuje, że nie masz zainstalowanego bashlub nie ma go w pliku PATH.

Najpopularniejszym hitem Google jest http://win-bash.sourceforge.net/, ale musisz także zrozumieć, że większość skryptów Bash oczekuje środowiska podobnego do Uniksa; więc samo zainstalowanie Bash prawdopodobnie nie pozwoli na uruchomienie skryptu znalezionego w sieci, chyba że został on specjalnie zaprojektowany dla tego konkretnego scenariusza użycia. Zwykłym rozwiązaniem jest https://www.cygwin.com/, ale istnieje wiele możliwych alternatyw, w zależności od tego, co dokładnie chcesz osiągnąć.

Jeśli system Windows nie jest kluczowy w Twoim scenariuszu użytkowania, instalacja bezpłatnego systemu operacyjnego (być może zwirtualizowanego) może być najprostszym rozwiązaniem.

Drugi komunikat o błędzie wynika z faktu, że system Windows nominalnie akceptuje ukośnik jako separator katalogu, ale w tym kontekście jest on interpretowany jako separator przełącznika. Innymi słowy, system Windows analizuje wiersz poleceń jako app /build /build.sh(lub, parafrazując konwencje opcji Uniksa, app --build --build.sh). Możesz spróbować, app\build\build.shale jest mało prawdopodobne, aby to zadziałało ze względu na okoliczności opisane powyżej.


1
Oczywiście w systemie Windows 10 możesz włączyć WSL i prawie mieć prawdziwy komputer w systemie Windows.
tripleee

158

Zainstaluj GIT . Podczas instalacji GIT dodaj GIT Bash do menu kontekstowego Windows, wybierając jego opcję. Po instalacji kliknij prawym przyciskiem myszy w swoim folderze, wybierz GIT Bash Here(patrz załączone zdjęcie) i użyj polecenia sh, na przykład:

sh test.sh

wprowadź opis obrazu tutaj


1
Na mnie to nie działa. Otworzy się okno wiersza polecenia, a następnie szybko się zamyka.
desbest

30
Jeśli masz zainstalowany GIT, możesz dodać do zmiennej systemowej PATH ścieżkę do sh.exe. W moim przypadku było to: c:\Program Files\Git\bin. Następnie uruchom sh .\script.shz PowerShell
elshev

2
Działa to na mnie jak urok w systemie Windows 10 w 2020 roku! Chociaż polecenie kopiowania / wklejania nie działa dla mnie, ponieważ zostało ustawione na ctrl-insishift-ins
Nam G VU

54

Najpopularniejszym sposobem na uruchomienie pliku .sh jest użycie polecenia sh :

C:\>sh my-script-test.sh 

Inną dobrą opcją jest instalacja CygWin

w znajduje się w:Windowshome

C:\cygwin64\home\[user]

na przykład wykonuję mój my-script-test.shplik za pomocą polecenia bash jako:

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 

48
Jeśli nie podjąłeś specjalnych środków, aby to uzyskać, nie będziesz mieć shpolecenia w systemie Windows.
user2357112 obsługuje Monikę

1
Ok -1, czy masz na myśli to, że muszę dodać samouczek, aby mieć dostęp do sh z wiersza poleceń ???
Jorgesys

44
Twoja odpowiedź jest prezentowana tak, jakbyś spodziewał się, że będziesz mógł pisać shw dowolnym wierszu polecenia systemu Windows i sprawić, że będzie działać.
user2357112 obsługuje Monikę

msys2 to dobre miejsce na pobranie polecenia sh. Sprawdź github.com/userzimmermann/MSYS2-cmd, jeśli chcesz go używać z cmd
Aralox

3
Bash i shpolecenie są instalowane z Git4Windows, jeśli wybierzesz opcję instalacji „Zainstaluj Bash”.
Joel Ellis

14

możesz też użyć cmder

Cmder to pakiet oprogramowania stworzony z czystej frustracji spowodowanej brakiem ładnych emulatorów konsoli w systemie Windows. Oparty jest na niesamowitym oprogramowaniu i doprawiony schematem kolorów Monokai i niestandardowym układem podpowiedzi, od samego początku wygląda seksownie

Zrzut ekranu

cmder.net


1
Chociaż wydaje się, że zawiera opcjonalny pakiet dodatków, który zawiera typowe polecenia powłoki systemu Unix, pakiet podstawowy wydaje się być tylko zamiennikiem cmd.
tripleee

5

W rocznicowej aktualizacji systemu Windows 10 jeszcze łatwiej jest uruchamiać polecenia powłoki w / z bash na ubuntu w systemie Windows

Próbowałem ustawić mój region dla mojego routera netgear x-wrt r7000, zauważyłem, że działa dla mnie następujące rozwiązanie, używając bash na ubuntu w systemie Windows, musisz włączyć podsystem znajdujący się w funkcjach systemu Windows i tryb programisty włączony

ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh

1
Może biegać. Ale to zupełnie inne środowisko.
TamusJRoyce

4

Nowa funkcja w systemie Windows - uruchamianie bash na systemie Ubuntu w systemie Windows - dostępne w kompilacjach „Insiders” systemu Windows 10 po konferencji Build:

https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/


Fajnie, ale jak uruchomić shplik z bash? Jeśli spróbuję to zrobić, okno po prostu miga i znika. Jeśli przeciągnę i upuść plik do otwartego okna bash, pojawi się komunikat, że ścieżka nie została znaleziona (ponieważ używa innej konwencji).
m93a

Czy w dzisiejszych czasach można uruchomić plik .sh w systemie Windows? Nie mogę tego teraz wypróbować, ale jestem zainteresowany.
JesusMurF

1
Nie próbowałem to sam, ale nie jest przewodnikiem przez Microsoft na jak uruchomić sh na oknach: docs.microsoft.com/en-us/windows/wsl/install-win10
claudiu.nicola

@ m93a W oknie terminala Ubuntu bash path/to/scripturuchamia skrypt. Z pewnością jest też shw Ubuntu. Jeśli skrypt ma odpowiedni shebang i uprawnienia, po prostu path/to/scripturuchomi go z rnterpreter określonym w shebang.
tripleee

4

Osobiście użyłem tego pliku wsadowego, ale wymaga on zainstalowanego CygWina (64-bitowego, jak pokazano). Po prostu skojarz typ pliku .SH z tym plikiem wsadowym (w moim przypadku ExecSH.BAT) i możesz kliknąć dwukrotnie plik .SH i zostanie uruchomiony.

@echo off
setlocal

if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof

set _CYGBIN=C:\cygwin64\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof

:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%CD%"') do set _CYGPATH=%%A

:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%\mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%;  %_CYGSCRIPT% %*'

Na podstawie tej oryginalnej pracy.


0

Używam powłoki Windows 10 Bash, znanej jako Linux Subsystem, czyli Ubuntu w systemie Windows 10, zgodnie z instrukcjami tutaj


0

Zainstaluj GitBashnarzędzie w systemie operacyjnym Windows. Ustaw poniższe Pathw zmiennych środowiskowych System dla instalacji Git.

<Pliki programów w C: \> \ Git \ bin

<Pliki programów w C: \> \ Git \ usr \ bin

Wpisz „ sh ” w cmdoknie, aby przekierować do powłoki Bourne i uruchomić swoje polecenia w terminalu.


1
Git Bash jest dostarczany z Git dla Windows .
Kevin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.