Windows Komut İstemi'nde .sh nasıl çalıştırılır?


132

Windows 7 Komut İstemi'nde .sh'yi nasıl çalıştırabilirim? Bu satırı içinde çalıştırmaya çalıştığımda her zaman bu hatayı alıyorum,

app/build/build.sh

hata,

'app' is not recognized...

veya,

bash app/build/build.sh

hata,

'bash' is not recognized...

Neyi kaçırdığım hakkında bir fikrin var mı?

İşte ekran tutucusu, görüntü açıklamasını buraya girin


6
cygwin'e ihtiyacınız var (muhtemelen). Windows'ta SHELL (.sh) komut dosyalarını çalıştırmaya çalışıyorsunuz ve dosyalarımı Windows'ta çalıştırmamın tek yolu bu .sh.
ha9u63ar

Yanıtlar:


54

Hata mesajı, kurulum yapmadığınızı bashveya uygulamada olmadığını gösterir PATH.

Google'da en çok hit http://win-bash.sourceforge.net/ olmakla birlikte, Bash komut dosyalarının çoğunun Unix benzeri bir ortam beklediğini de anlamanız gerekir; Bu nedenle, Bash'i kurmanın, bu özel kullanım senaryosu için özel olarak tasarlanmadığı sürece, muhtemelen internette bulduğunuz bir komut dosyasını çalıştırmanıza izin vermesi olası değildir. Bunun olağan çözümü https://www.cygwin.com/'dir, ancak tam olarak neyi başarmak istediğinize bağlı olarak birçok olası alternatif vardır.

Windows, kullanım senaryonuzun merkezinde değilse, ücretsiz bir işletim sistemi (belki sanallaştırılmış) kurmak, ileriye dönük en basit yol olabilir.

İkinci hata mesajı, Windows'un nominal olarak eğik çizgiyi bir dizin ayırıcısı olarak kabul etmesinden kaynaklanmaktadır, ancak bu bağlamda, bir anahtar ayırıcısı olarak yorumlanmaktadır. Başka bir deyişle, Windows komut satırınızı app /build /build.sh(veya Unix seçenek kurallarıyla açıklamak için) olarak ayrıştırır app --build --build.sh. Deneyebilirsiniz, app\build\build.shancak yukarıda belirtilen koşullar nedeniyle işe yaraması olası değildir.


1
Tabii ki, Windows 10 ile WSL'yi etkinleştirebilir ve Windows'un içinde neredeyse gerçek bir bilgisayara sahip olabilirsiniz.
üçlü

148

GIT'i yükleyin . GIT kurulumu sırasında, seçeneğini belirleyerek Windows içerik menüsüne GIT Bash ekleyin. Kurulumdan sonra klasörünüze sağ tıklayın GIT Bash Here(ekli resme bakın) ve sh komutunuzu aşağıdaki gibi kullanın:

sh test.sh

görüntü açıklamasını buraya girin


1
Benim için çalışmıyor. Bir komut istemi penceresi açılır ve ardından hızla kapanır.
desbest

28
GIT yüklediyseniz, PATH sistem değişkenine bir yol ekleyebilirsiniz sh.exe. Benim durumumda bu oldu: c:\Program Files\Git\bin. Ardından sh .\script.shPowerShell'den çalıştırın
elshev

1
Bu benim için 2020'de Windows 10'da bir cazibe gibi çalışıyor! Kopyala / yapıştır komutu, ctrl-insveshift-ins
Nam G VU

51

Bir .sh dosyasını çalıştırmanın en yaygın yolu sh komutunu kullanmaktır:

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

diğer iyi bir seçenek CygWin'i kurmaktır

içinde bulunur:Windowshome

C:\cygwin64\home\[user]

örneğin my-script-test.sh, bash komutunu kullanarak dosyamı şu şekilde çalıştırıyorum :

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

44
Bunu elde etmek için özel önlemler almadığınız sürece sh, Windows'ta bir komutunuz olmayacak .
user2357112 Monica'yı

1
Ok -1, Sh'ye komut satırından erişebilmek için bir eğitim eklemem gerektiğini mi söylüyorsunuz ???
Jorgesys

42
Cevabınız, shrastgele bir Windows komut istemine yazıp çalışmasını sağlamayı bekliyormuşsunuz gibi sunulur .
user2357112

msys2, sh komutunu almak için iyi bir yerdir. Check out github.com/userzimmermann/MSYS2-cmd sen cmd ile kullanmak istiyorsanız
Aralox

3
Bash ve shkomut, 'Bash Kur' kurulum seçeneğini seçerseniz Git4Windows ile birlikte yüklenir.
Joel Ellis

13

cmder de kullanabilirsiniz

Cmder, Windows'ta hoş konsol emülatörlerinin bulunmamasından kaynaklanan saf hayal kırıklığından oluşturulmuş bir yazılım paketidir. Harika bir yazılıma dayanıyor ve Monokai renk şeması ve özel bir komut istemi düzeni ile renklendirilmiş, baştan seksi görünüyor

Ekran görüntüsü

cmder.net


1
Yaygın Unix kabuk komutlarını içeren isteğe bağlı bir eklenti paketi ile birlikte geliyor gibi görünse de, temel paket sadece bunun yerine geçecek gibi görünüyor cmd.
2016

5

Windows 10 Yıldönümü Güncellemesinde, Windows üzerinde ubuntu üzerinde bash içinde / ile kabuk komutlarını çalıştırmak daha da kolay

Bölgemi x-wrt r7000 netgear yönlendiricim için ayarlamaya çalışıyordum, aşağıdakilerin benim için çalıştığını buldum, Windows üzerinde ubuntu üzerinde bash kullanarak, Windows özelliklerinde bulunan alt sistemi etkinleştirmeniz gerekiyor ve dev modu açık

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

Koşabilir. Ama tamamen farklı bir ortam.
TamusJRoyce

4

Windows'taki yeni özellik - Windows üzerinde ubuntu üzerinde bash çalıştırın - Build konferansından sonra Windows 10 "Insiders" derlemelerinde mevcuttur:

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


Harika, ama bir shdosyayı nasıl çalıştırırsınız bash? Bunu yapmaya çalışırsam, pencere yanıp söner ve kaybolur. Dosyayı açık bir bash penceresine sürükleyip bırakırsam, yolun bulunamadığını söylüyor (çünkü farklı bir kural kullanıyor).
m93a

Günümüzde Windows'ta bir .sh dosyası çalıştırmak mümkün mü? Şimdi deneyemiyorum ama ilgileniyorum.
JesusMurF

1
Ben kendim denemedim, ancak Microsoft tarafından Windows'ta sh'nin
claudiu.nicola

@ m93a Bir Ubuntu terminal penceresinde, bash path/to/scriptkomut dosyasını çalıştırır. shUbuntu'da da kesinlikle var . Eğer betik uygun bir şebang ve izinlere sahipse, path/to/scriptonu shebang'da belirtilen rnterpreter ile çalıştıracaktır.
üçlü

4

Şahsen ben bu toplu iş dosyasını kullandım, ancak CygWin'in kurulu olmasını gerektiriyor (gösterildiği gibi 64-bit). Sadece .SH dosya türünü bu toplu iş dosyasıyla ilişkilendirin (benim durumumda ExecSH.BAT) ve .SH'ye çift tıklayıp çalıştırabilirsiniz.

@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% %*'

Dayanarak bu özgün çalışma.


0

Güdümlü olarak ben, Windows 10 Ubuntu aka Linux Subsystem aka Windows 10 Bash kabuğu kullanarak burada

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.