Anasayfa » nasıl » Shell Komut Dosyasında #! / Bin / sh yerine #! / Bin / bash Kullanmak Ne Zaman Daha İyidir?

    Shell Komut Dosyasında #! / Bin / sh yerine #! / Bin / bash Kullanmak Ne Zaman Daha İyidir?

    Yeni bir kabuk betiği oluştururken, mümkün olduğunca problemsiz olduğundan emin olmak istersiniz, ancak bazen hangi shebang'ın kullanmanız için en iyisi olduğunu bilmek biraz kafa karıştırıcı olabilir. Bu notta, günümüzün Süper Kullanıcı Soru-Cevap postasının kafası karışmış bir okuyucunun sorusuna cevap vardır..

    Bugünün Soru ve Cevap oturumu bize topluluk tarafından yönlendirilen bir soru-cevap web sitesi grubu olan Stack Exchange'in bir alt birimi olan SuperUser'ın izniyle geliyor..

    Soru

    SuperUser okuyucu Hendre ne zaman kullanmanın daha iyi olacağını bilmek istiyor #! / Bin / bash yerine #! / Bin / sh Kabuk komut dosyalarında:

    Ne zaman kullanmak daha uygun olur? #! / Bin / bash ziyade #! / Bin / sh bir kabuk komut dosyasında?

    Ne zaman kullanmak daha iyidir? #! / Bin / bash yerine #! / Bin / sh bir kabuk komut dosyasında?

    Cevap

    SuperUser katkıda bulunan kişinin katılımı bizim için bir cevabı var:

    Kısacası:

    • POSIX sh teknik özelliklerinin bir üst kümesi uygulayan birkaç kabuk vardır. Farklı sistemlerde, / Bin / sh kül, bash, çizgi, ksh, zsh, vb. için bir bağlantı olabilir. Asla csh veya balık olmasa da her zaman sh uyumlu olacak.
    • Yalnızca sh özelliklerine bağlı kaldığınız sürece, kullanabilirsiniz (ve muhtemelen kullanmanız gerekir) #! / Bin / sh ve senaryo düzgün olmalı, hangi kabuk olursa olsun.
    • Bash'a özgü özellikleri kullanmaya başlarsanız (yani, diziler), özellikle bash istemeniz gerekir, çünkü / Bin / sh Zaten sisteminizde bash çağırdı, herkesin sisteminde olmayabilir ve komut dosyası orada çalışmayacak. Aynısı elbette zsh ve ksh için de geçerlidir.
    • Komut dosyası yalnızca kişisel kullanım için olsa bile, bazı işletim sistemlerinin değiştiğini fark edebilirsiniz. / Bin / sh yükseltme sırasında. Örneğin, Debian'da bash olarak kullanılır, ancak daha sonra çok az bir çizgi ile değiştirildi. Temelleri kullanan, ancak olan komut dosyaları #! / Bin / sh aniden kırdı.

    Ancak:

    • Üstelik #! / Bin / bash bu doğru değil. Farklı sistemlerde bash yaşayabilir / Usr / bin, / Usr / pkg / bin, veya / Usr / local / bin.
    • Daha güvenilir bir seçenek #! / usr / bin / env bash, hangi kullanır $ PATH. Env aracının kendisi de kesin olarak garanti edilmese de, / Usr / bin / env hala daha fazla sistemde çalışıyor / Bin / bash yapar.

    Açıklamaya eklemek için bir şey var mı? Yorumlarda ses kesiliyor. Diğer teknoloji meraklısı Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Burada tüm tartışma konusuna göz atın.

    Resim Kredisi: Wikipedia