cd
kabuk yerleşik olmasının yanı sıra , aslında POSIX uyumlu işletim sistemlerinde de bir programdır . Onlar gerekir gibi düzenli programlar için bağımsız çalıştırılabilir sağlamak cd
. Bu örneğin Solaris , AIX , HP-UX ve OS X için olan durumdur .
Açıkçası, cd
harici uygulama mevcut kabuk dizinini değiştirmediğinden bir yerleşik hala zorunludur. Bununla birlikte, ikincisi hala faydalı olabilir. POSIX'in bu cd
komutun nasıl kullanılabileceğini öngördüğünü gösteren bir örnek :
find . -type d -exec cd {} \;
Bir POSIX sisteminde bu oneliner, içeri girmenize izin verilmeyen tüm dizinler için bir hata mesajı bildirir cd
. Çoğu Gnu / Linux dağıtımında, bu hata iletisiyle başarısız olur:
find: `cd': No such file or directory
Ve orjinal Unix yazarlarından birinin " Neden cd bir program değil? " Sorusunun cevabı . Çok erken bir Unix uygulamasında cd
( chdir
o sırada yazıldığından ) harici bir programdı. fork
İlk uygulandıktan sonra beklenmedik bir şekilde çalışmayı durdurdu .
Dennis Ritchie'den alıntı :
Sevinmemizin ortasında, chdir (geçerli dizini değiştir) komutunun çalışmayı durdurduğu tespit edildi. Çatal ilavesinin chdir çağrısını nasıl kırabileceği konusunda çok fazla kod ve endişeli içgüdü okundu. Sonunda gerçeği doğdu: eski sistemde chdir sıradan bir emirdi; terminale ekli (benzersiz) işlemin geçerli dizinini ayarladı. Yeni sistemde, chdir komutu, yürütmek için oluşturulan işlemin geçerli dizinini doğru bir şekilde değiştirdi, ancak bu işlem derhal sonlandırıldı ve ana kabuğu üzerinde hiçbir etkisi olmadı! Chdir'yi kabuk içinde dahili olarak yürütülen özel bir komut yapmak gerekliydi. Birkaç komut benzeri fonksiyonun aynı özelliğe sahip olduğu, örneğin giriş olduğu ortaya çıktı.
Kaynak: Dennis M. Ritchie, “ Unix Zaman Paylaşma Sisteminin Gelişimi ”, AT&T Bell Laboratuvarları Teknik Dergisi 63 (6), Bölüm 2, Ekim 1984, s.1577–93
Unix Versiyon 1 (Mart 1971) chdir manuel sayfa durumları:
Her komutu yürütmek için yeni bir işlem oluşturulduğundan, normal bir komut olarak yazılmışsa chdir etkisiz olur. Bu nedenle Shell tarafından tanınır ve yürütülür.