2009-04-24 17 views
15

Cygwin'de bash'dan bir .bat komut dosyasını çalıştırdığımda, hangi mekanizma çalışıyor? Bir .exe çalıştırırsam .EXE'nin Cygwin'den mi yoksa daha geleneksel bir ortamdan bağımsız olarak başlatılacağını anlıyorum. # Ile çalıştırılabilir bir komut dosyasını çalıştırdığımda anlıyorum! Başlangıçta Cygwin'in çalışması için sihri sağlaması.Neden Cygwin .bat betiklerini çalıştırabilir?

Fakat .bat betiği neden çalışıyor? Cygwin'in içinde Windows .bat betiğinin ne olduğunu ve bununla ne yapacağının farkında olan bazı bileşenleri var mı? Yoksa Windows tarafından bir .bat dosyası için otomatik olarak çalışmayan bir .exe dosyasını başlatmak için bir çağrı yürütmek bir şekilde imkansız mıdır?

cevap

10

Cygwin'deki bash'ın yarasa uzantısını işaretli yürütülebilir olarak algıladığına inanıyorum (cygwin hit-ipucu, windows convention). Bu şekilde, yüklediğiniz yorumlayıcıyı (cmd.exe, os yapılandırma) kullanarak dosyayı yükler ve çalıştırır. komut dosyaları (posix standardına göre). bash

./test.bat params 

cmd /c test.bat params 
+1

Normal UNIX kabuk betikleri için, shebang'den sonra belirtilen programı yüklemelisiniz, körü körüne bash kullanmayın (ve bash belirten betikler çok taşınabilir değildir :)) – Joey

+0

Bu, .bat için çalışır ancak .ps1 (PowerShell). Cygwin, .bat dosyalarının bazı dahili işlemlerine sahip olmalıdır. –

9

Ve eğer bir shellscript süreci gibi bir * .cmd dosya yürütme çatal ve bir dosyaya onun günlüğünü eklemek istiyorsanız:

2

eşdeğer gibi görünüyor Koşu