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,
windows
bash
command-line
sh
laukok
źródło
źródło
.sh
pliki w systemie Windows.Odpowiedzi:
Komunikat o błędzie wskazuje, że nie masz zainstalowanego
bash
lub nie ma go w plikuPATH
.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.sh
ale jest mało prawdopodobne, aby to zadziałało ze względu na okoliczności opisane powyżej.źródło
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:źródło
sh.exe
. W moim przypadku było to:c:\Program Files\Git\bin
. Następnie uruchomsh .\script.sh
z PowerShellctrl-ins
ishift-ins
Najpopularniejszym sposobem na uruchomienie pliku .sh jest użycie polecenia sh :
Inną dobrą opcją jest instalacja CygWin
w znajduje się w:
Windows
home
na przykład wykonuję mój
my-script-test.sh
plik za pomocą polecenia bash jako:źródło
sh
polecenia w systemie Windows.sh
w dowolnym wierszu polecenia systemu Windows i sprawić, że będzie działać.sh
polecenie są instalowane z Git4Windows, jeśli wybierzesz opcję instalacji „Zainstaluj Bash”.możesz też użyć cmder
cmder.net
źródło
cmd
.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
źródło
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/
źródło
sh
plik zbash
? 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).bash path/to/script
uruchamia skrypt. Z pewnością jest teżsh
w Ubuntu. Jeśli skrypt ma odpowiedni shebang i uprawnienia, po prostupath/to/script
uruchomi go z rnterpreter określonym w shebang.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.
źródło
Używam powłoki Windows 10 Bash, znanej jako Linux Subsystem, czyli Ubuntu w systemie Windows 10, zgodnie z instrukcjami tutaj
źródło
Zainstaluj
GitBash
narzędzie w systemie operacyjnym Windows. Ustaw poniższePath
w zmiennych środowiskowych System dla instalacji Git.Wpisz „ sh ” w
cmd
oknie, aby przekierować do powłoki Bourne i uruchomić swoje polecenia w terminalu.źródło