Bu "sanki" bir kuraldır.
Basitçe söylemek gerekirse: Bir uygulama, standart bir harici komutun yerleşik kabuk olarak da kullanılabilir hale getirilmesine karar verirse, kullanıcıların gördüğü şekliyle kabuğun davranışı değişmemelidir.
Https://unix.stackexchange.com/a/496291/5132 adresinde , bir yandan PD Korn, MirBSD Korn ve Heirloom Bourne mermilerinin davranışları arasında gösterdiğim kontrast ; (diğer yandan) Z, 93 Korn, Yine Bourne ve Debian Almquist mermileri; ve (sürükleyici elden) Watanabe kabuğu bunu vurgular.
Yok kabukları için printfbir yerleşik çıkarmadan /usr/bingelen PATHbir çağırma yapar printfçalışmamaya. Watanabe kabuğunun uygun modda sergilediği POSIX uyum davranışı aynı sonuca neden olur. Bir sahiptir kabuğun davranış printfyerleşik olduğu gibi harici bir komutu çağırarak bulundu.
Olmayan uyumlu tüm kabukların davranışı Oysa eğer değiştirmez /usr/binkaldırılır PATHve onlar do not onlar harici komutu çağırarak sanki davranır.
Standardın size garanti etmeye çalıştığı şey, mermilerin normalde harici komutların her türünü oluşturabilmesi (veya bunları kendi kabuk işlevleri olarak uygulayabilmesidir) ve yine de yerleşiklerden yaptığınızla aynı davranışı elde edersiniz. komutların PATHbulunmasını durdurmak için ayar yaparsanız harici komutlarla . PATHhangi komutları çağırabileceğinizi seçmek ve kontrol etmek için aracınız kalır.
( Https://unix.stackexchange.com/a/448799/5132 adresinde açıklandığı gibi , yıllar önce insanlar olanları değiştirerek Unix'lerinin kişiliğini seçtiler PATH.)
Komutun bulunup bulunamayacağına bakılmaksızın her zaman çalışmasını PATH sağlamak aslında normalde harici komutları yerleşik hale getirme noktasıdır . (Bu yüzden nosh araç setim printenvaslında 1.38 sürümünde yerleşik bir komut kazandı . Bu bir kabuk olmamasına rağmen .)
Ancak standart size, işlevi başlatan diğer kabuk dışı programlardan göreceğiniz gibi kabuktan alınmayan normal harici komutlar için aynı davranışı göreceğinizi garanti eder ve kabuk sihirli bir şekilde yapamaz. diğer programların bulamadığı sıradan harici komutları çalıştırın (görünüşte) . Her şey kullanıcının bakış açısından kendi kendine tutarlı bir şekilde çalışır ve nasıl çalıştığını kontrol etmek için bir araçtır.PATHexecvpe()PATHPATH
daha fazla okuma