2011-06-21 10 views
5

Çalıştırmak istediğim bir zsh betiğimde .zshrc dosyası da yükler. Scriptimi etkileşimli modda çalıştırmam gerektiğine inanıyorum? Arka planda bu komut dosyasını çalıştırmayı denediğinizde, benim komut dosyası (ben parametrelerin doğru numarasını geçmesi bile) askıya olur AncakBir zsh betiğinin askıya alınması nasıl durdurulur (tty çıkışı)

#!/bin/zsh -i 

if [ $# = 0 ] 
then 
    echo "need command line paramter..." 
    exit 
fi 

,: gibi

Böylece benim senaryom başlar

[1] + suspended (tty output) 

Sorum şu: Başlangıçta .zshrc dosyasını yükleyen arka planda çalışabilen bir komut dosyasını nasıl yapabilirim? Eğer etkileşimli moda geçirmem gerekiyorsa, tty çıkışı probleminde askıya alınmasını nasıl engelleyebilirim?

Teşekkür

+2

Lütfen betiğinizi başlatmak için kullandığınız tam komutu ekleyin. – Flimzy

cevap

6

karma-bang interaktif modu kullanmayın!

İleride
#!/bin/zsh 
source ~/.zshrc 
... 

, bunu olamaz böylece kabuğundan önceden backgrounded işi ayırmak için disown Bultin kullanabilirsiniz:

Bunun yerine, komut kaynağın zshrc dosyası bunu isterseniz askıya alınmış veya başka bir şey.

$ ./my_command &! 
: yerine sadece & ait &! operatörü kullanarak programı başlattığınızda

$ disown %1 

komut satırından doğrudan yapabilirsiniz: Üst kabuk sonra süreci etkileyecek hiçbir ile kapatılabilir