İki yerleşik sınıf vardır:
Bazı komutların kabuk programın içine yerleştirilmesi gerekir, çünkü haricise çalışamazlar.
cd
çünkü eğer harici olsaydı, sadece kendi dizinini değiştirebilirdi; kabuğun mevcut çalışma dizinini etkileyemedi. (Ayrıca bakınız: Neden cd
bir program değil? )
Diğer komutlar sınıfı tamamen verimlilik için kabuğun içine yerleştirilmiştir.
Adam sayfa bahseder yerleşikleri bir bölüm vardır , ve bu sınıfta komutların örnekler olarak.dash
printf
echo
test
Unix sistemleri her zaman o ikinci sınıftaki komutlar için ayrı çalıştırılabilir kodlar ekledi. Bu ayrı yürütülebilir dosyalar, kullanacağınız her kabuğun içine de yerleştirilmiş olsalar bile, kullandığım tüm Unixy sistemlerinde hala mevcuttur. ( POSIX aslında bu yürütülebilir dosyaların mevcut olmasını gerektirir.)
echo
AT&T Unix System V Sürüm 3.1’de kabuğun içine yerleştirildiğine inanıyorum . Bunu, AT & Ts 3B1 serisi Unix sistemleri için iki farklı kullanım kılavuzunun karşılaştırmasına dayandırdım . Birisi nazikçe bu kılavuzların 1986 basımını taradı ve çevrimiçi hale getirdi ; bunlar SVR3'ün orijinal sürümüne karşılık gelir. Komutun kabuğun içine yerleştirilmiş olup olmadığını bekleyeceğiniz UNIX System V Kullanıcı El Kitabı, Cilt II'ninecho
523. sayfasındaki listede olmadığını görebilirsiniz . 1987 den SVR3.1 kılavuzları benim yerel kağıt kopya olarak, bir kılavuzun bu bölümde listelenen.echo
Bunun AT & T'nin eve geri getirdiği bir Berkeley CSRG yeniliği olmadığından eminim . 4.3BSD, SVR3, 1986 ile aynı yıl çıktı, ancak 4.3BSD'nin sh.1 kılavuz sayfasına bakarsanız echo
, "Özel Komutlar" bölümünde yerleşik komutlar listesinde olmadığını görüyorsunuz . Eğer CSRG bunu yaptıysa, kanıtlamak için belgelenmiş bir kaynak istememize izin verilmez.
Bu noktada, echo
kabuğun içine SVR3.1'den daha önce yerleştirilmiş olup olmadığını ve bu gerçeğin o zamana kadar belgelenmediğini merak edebilirsiniz . Bana sunulan en yeni SVR3 AT&T Unix kaynak kodu , Bourne kabuğu kaynak kodunu bulacağınız PDP-11 Sistem III tarball'ındadır . echo
İçindeki yerleşik komut tablosunda bulamazsınız /usr/src/cmd/sh/msg.c
. Bu dosyadaki zaman damgalarına dayanarak, bu echo
1980'de kesinlikle kabuğun içinde olmadığını kanıtladı .
önemsiz şeyler
Aynı dizin builtin.c
, bu soru için o noktada hiçbir şey içermeyen bir dosya da içeriyor , ancak bu ilginç yorumu buluyoruz:
/*
builtin commands are those that Bourne did not intend
to be part of his shell.
Redirection of i/o, or rather the lack of it, is still a
problem..
*/