Yanıtlar:
Windows CMD.EXE üzerindesiniz (hata iletisinden). Komutları çalıştırmak için farklı bir sözdizimi kullanır. sh name.sh
Cygwin veya benzeri bir sisteminizin kurulu olduğunu varsayarak kullanmanız gerekir.
Netleştirmek için, Windows'un .sh dosyalarını destekleyen yerleşik bir yardımcı programı yoktur. Böyle çalıştırmak için, Cygwin gibi üçüncü taraf bir araç kurmanız gerekir .
Windows Komut İsteminde bir Linux komutu çalıştırmaya çalışıyorsunuz.
Linux'ta eğik çizgi bir yol ayırıcıdır. Windows'ta ters eğik çizgi bir yol ayırıcıdır ve eğik çizgi genellikle bir argüman gösterir.
Bu nedenle, Windows "." Adlı bir komutu çalıştırmaya çalıştığınızı düşünüyor. ve "/name.sh" argümanını ayrıştırma. Doğru kural ". \ Name.sh" olur. Ek olarak, Windows komutunuz için geçerli dizini otomatik olarak arayacaktır, böylece sadece "name.sh" yazabilirsiniz.
Karşılaşacağınız bir sonraki sorun, Windows'un bir sh betiğinin ne olduğunu bilmemesidir, yine de bu bir Linux olayıdır. Eğer gerçekten bir sh betiği çalıştırmak istiyorsanız veya çalıştırmak istiyorsanız Cygwin'i kurarak bunu çözebilirsiniz.
Ancak, önceki yorumlarınızdan biriyle karar verirseniz, komut dosyasını name.bat olarak yeniden adlandırabilir ve "#! / Bin / sh" satırını silebilirsiniz. Şimdi Windows'un anlaması gereken bir Toplu iş dosyanız var. Toplu iş dosyaları hakkında buradan daha fazla bilgi edinebilirsiniz .
Alternatif olarak karanlık tarafa dönebilir ve Linux kurabilirsiniz. İstemden:
sh runide.sh
veya
sudo sh runide.sh
Programınız çalışacak ve siz de daha iyi bir sisteme sahip olacaksınız.
İndirin ve yükleyin .git for Windows
Masaüstünü sağ tıklayın ve "git bash here" deyin
Komut dosyanızı unix'teki gibi çalıştırın
Bitti!
Dikkat: Birçok komut pencerelerde çalışmaz! Ama yine de, temel şeylerin çoğu işe yarayacak.
Bu betiğe düzenli olarak ihtiyacınız varsa, bir kısayol oluşturmak isteyebilirsiniz (örneğin masaüstünüzde):
Bir kısayol oluşturun için mintty.exe
masaüstünüzde
Kısayolun özelliklerini düzenle ve hedefi değiştir (yolu tut):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Arabanızı benzin yerine portakal suyu ile çalıştırmaya çalışıyorsunuz. Windows, Unix / Linux / zOS Unix Subsystem / * ix kabuk betiklerinde .bat veya .cmd dosyalarında saklanan benzer komutları, bu iki işletim sistemi ailesi DEC PDP-x makinelerinde ortak bir ata paylaşırken.
Anlık tatma istiyorsanız, "sh.exe" programı veya "csh.exe" veya "bash.exe" programı (tsh.exe herkes?) Sağlayan bir ortam yüklemeniz gerekir.
Alternatif olarak, Unix komut dosyası komutlarını çok iyi biliyorsanız ve Windows .cmd ve .bat dosya komutlarını çok iyi biliyorsanız, .sh dosyasını bir .bat veya .cmd dosyasına çevirebilirsiniz. Buna rağmen, çoğu zaman Windows altında eşdeğeri olmayan daha fazla Unix tarzı programla karşılaşırsınız - grep, sed, vi, emacs, vb. araçlar. Bu özel durumlar için bir flash sürücüye yerleştirin.
Birisi /
komutlar ve \
yollar için MS-DOS hakkında bir şeyler söyledi . Bu biraz yanıltıcıdır. Benim örneğime bak:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
Etkisi arasında hiçbir fark yoktur. Evet, tüm işlemler için doğru değil - gerçek cevap sadece Hayır , ya da Cygwin veya SSHD olmadan yapamazsınız.
Aptalca ne olduğunu anlamaya çalışırken yarım gün geçirdi çünkü sadece bilmek if then fi
ve eval
, exec
ile yapmak -Djava.something
çağrıldığında.
Windows için Github kullanın. Tüm Unix ortamında çalıştırılabilir dosyaları içerir.
Tamamlanması için, Windows 10 için yeni bir “Linux için Windows Alt Sistemi” özelliğinden bahsetmek istiyorum. Detaylar, http://www.howtogeek.com/249966/how-to-install-and-use-the-linux- bash-kabuk-on-cam-10 /
“Geliştirici Modu” anahtarını etkinleştirmeyi ve “Windows için Windows Alt Sistemi (Beta)” seçeneğini etkinleştirmeyi gerektirdiğini unutmayın.
Benim için Git için Windows yüklemesinin (zaten kullanıyorum) yeterli olduğunu öğrendim.
Bu eski bir konu ancak Windows 10 çalıştıranlar için. Yalnızca Windows özelliklerini açıp 'Windows Özelliklerini Aç veya Kapat' kontrol panelinden açın.
'Linux için Windows Alt Sistemi' özelliğini seçin. Kurduktan sonra 'Bash'e sahipsiniz ve hatta yerel Linux sunucularını bash içinde yapılandırabilirsiniz. Ve elbette, bash içindeki sh komutu da işe yarıyor.
Sorunun gerçekte dosya içinde olması olasıdır name.sh
- .
komutu kullanmaya çalışıyorsunuz ancak bunun csh
geçerli bir komut olmadığı bir tür kabuk (örneğin, sanırım) çalıştırmaya çalışıyor .
Yani: name.sh
Doğru ile başlıyor mu #!/bin/sh
(eğer gerçekten koşmaya çalışıyorsanız sh
)?
Tamam, Bunda yanlış bir LOT var - #! / bin / sh'i bırakın ve uzantıyı yarasa olarak değiştirin; birkaç düzeltmeyle çalışabilir. O zaman sadece dosya adıyla da onu çağırabilirsin.
Bir unix kabuk betiğinin ve bir windows toplu iş dosyasının sözdizimi aynı değildir. Cygwin, ya da unxutils ile uğraşmak bir yük her ikisi de işe yarayacak bir şey yapabilir, ancak kesinlikle ÇEVRESİNİZ kesinlikle aynı olmadığından emin değilseniz, baş ağrısı değmez
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
Ne?! Bunu hiç denemediğinizden şüpheleniyorum ... Windows'ta, en basit bash yetenekleri bile desteklenmiyor ya da uzun sözdizimi gerektiriyor.
Evinizde (veya işinizde) bir Linux kutunuz varsa ve aynı ağa bağlıysanız ve bu ağ güvenliyse, bu işi yapabilir:
mount //WinMachine/Share LinuxFolder
(IIRC ve Samba gerektirir ) kullanın.Kabuk komut dosyasını pencerelerden çalıştırmak için. Önce komutu kullanın: dos2unix sonra normal komutunuzu kullanabilirsiniz: sh runide.sh
Bu işe yarayacak.
Burada mevcut cevapları anda doğru olmasına rağmen Windows 10 gelmez artık isteğe dahil tam bir bash kabuğunu çalışan Ubuntu değiştirilmiş bir versiyonunu .
Çalıştırılabilir hale getirildikten sonra, komut dosyaları bash içinden normal şekilde çalıştırılabilir, örneğin:
chmod +x myscript.sh
./myscript.sh
Bir komut dosyasını doğrudan Windows'tan çalıştırmak istiyorsanız, aynı dizinde bir kısayol oluşturabilir ve 'Hedef'i aşağıdaki gibi bir şeye ayarlayabilirsiniz:
C:\Windows\System32\bash.exe -c "./myscript.sh"
Komut dosyanızın yolu kısayolun konumuna göre ise (yukarıdaki örnekte olduğu gibi) 'Başlangıç' alanının da boş olduğundan emin olun.