Açıkçası, bindizinlerdeki yürütülebilir dosyalar ile düzenlenebilir "kaynak" dosyalar arasında bazı farklılıklar var .
- Kaynak dosyalar için, bir sonekin olması yararlıdır, böylece neyin ne olduğunu görebilir ve
#!satırı taramayı başaramayan daha az akıllı araçlara yardımcı olabilirsiniz .
- Modüllerin için, onlar sadece aynı tercüman (veya hiç tercüman) kullanan tüm bunların programların alakalı bir kümedeki kullandığı ve katılması alışıldık ediyoruz
.pm, .shya .sobu gibi durumlarda.
- Yürütülebilir programlar için, adı, kullanıcıların ve diğer komut dosyalarının çağırdığı "programlama sözleşmesinin" bir parçasıdır. Uygulama yapsa bile adın değişmemesi önemlidir ; yani Açıkçası dosya adı olmalıdır değil bir sonek
Derlenmiş bir program durumunda, "kaynak" ve "çalıştırılabilir" arasındaki fark açıktır: biri kaynak kodu, diğeri makine dili veya yorumlanan bayt kodu. Bir komut dosyası durumunda, bariz bir fark yoktur, ancak makekomut, "komut dosyası için kaynak kod" ile "komut dosyasının çalıştırılabilir sürümü" arasında bir ayrım sağlar: "kabuk komut dosyası" için varsayılan "derleyici" cp.
Ayrı bir $HOME/sourcedizin tutmanızı tavsiye ederim , ya da:
- tarafından yapılan gibi bir sembolik bağ tutulması
ln -s ../source/foo.sh $HOME/bin/foo; veya
- kullanarak değişiklikleri yaptıktan (ve test ettikten sonra) manuel olarak kopyalayın
install -m 755 foo.sh ../bin/foo; veya
- Bir kullanarak
Makefilekural gelen kaynak dosyayı kopyalamadan önce bir sözdizimi denetimi gerçekleştirmek için $HOME/sourceiçine$HOME/bin
Dipnot: Bir kabuk betiği modülü yalnızca başka bir kabuk betiği tarafından kullanılabilir ve bu betiğin iç bağlamını .veya sourceyerleşik komutlarını kullanarak değiştirir . Bu, (herhangi bir program gibi) ayrı bir işlem olarak çalışan ve ana işlemini değiştiremeyen yürütülebilir bir komut dosyasından farklıdır. Zorlu bir kongre olarak, modüller /usr/lib/name_of_program/name_of_module.shgirerken, komutlar /usr/bin/name_of_commandda girer (ekler olmadan).