Watanabe kabuğu, kılavuzunda ayrıntılı olarak açıklanan üç çeşit yerleşik içerir. Tüm yerleşik komutlar da burada listelenir, ancak komutun "özel" veya "yarı özel" olduğunu belirten herhangi bir notun bulunmaması nedeniyle bir şeyin "normal" yerleşik bir komut olduğunu çıkarması gerekir. yerleşik. Düzenli yerleşiklerin işareti kaldırılmıştır.
printf
böyle bir "düzenli" yerleşik. Yerel modda , bu adda harici bir komut bulunup bulunmadığına bakılmaksızın her zaman çağrılır.
$ PATH = / usr / bin
$ printf
printf: bu komut bir işlenen gerektirir
$ type printf
printf: / usr / bin / printf adresinde düzenli olarak yerleşik
$
$ PATH = /
$ printf
printf: bu komut bir işlenen gerektirir
$ type printf
printf: normal bir yerleşik ($ PATH içinde bulunamadı)
$
Ancak posixly-correct
kabuk seçeneği ayarlandığında, yalnızca harici komutun üzerinde bulunması durumunda yerleşiktir PATH
.
$ set - ek olarak doğru
$
$ PATH = / usr / bin
$ printf
printf: bu komut bir işlenen gerektirir
$
$ PATH = /
$ printf
yash: böyle bir komut `printf 'yok
$
Bu aslında Single Unix Spesifikasyonu'nun söylediklerine uygundur ve en azından 1997'den beri söyledi.
Z kabuğundan, 93 Korn kabuğundan, Bourne Again kabuğundan ve Debian Almquist kabuğundan farklıdır, bunların hiçbiri normal yerleşikler için bu tür davranışları uygulamaz ya da belgelemez. Örneğin Z kabuğu, normal yerleşiklerin bulunduğu belgeler , arama adımından önce daima bulunur . Debian Almquist kabuğu da öyle. POSIX açılma seçeneklerinde olduğu gibi çağrılsa bile, bu mermilerin hepsi böyle yapar .PATH
sh
% / bin / exec -a sh zsh -c "YOL = /; printf; printf" yazın
printf bir kabuk yerleşiktir
zsh: printf: 1: yeterli bağımsız değişken yok
% / bin / exec -a sh ksh93 -c "YOL = /; printf; printf" yazın
printf bir kabuk yerleşiktir
Kullanım: printf [seçenekler] format [dize ...]
% / bin / exec -a sh bash --posix -c "PATH = / type printf; printf"
printf bir kabuk yerleşiktir
printf: kullanım: printf [-v var] biçimi [argümanlar]
% / bin / exec -a sh tire -c "YOL = /; printf; printf" yazın
printf bir kabuk yerleşiktir
sh: 1: printf: kullanım: printf biçimi [arg ...]
%
Ancak çalışmadığı printf
üzerinde olmadığı halde PATH
PD Korn kabuk, Heirloom Bourne kabuğu ve MirBSD Korn kabuk davranıştır; çünkü printf
ilk etapta yerleşikleri yoktur. ☺
% / bin / exec -a sh `komutu -v ksh` -c" PATH = /; printf; printf "yazın
printf bulunamadı
sh: printf: bulunamadı
% / bin / exec -a sh `komutu -v oksh` -c" PATH = /; printf; printf "yazın
printf bulunamadı
sh: printf: bulunamadı
% / bin / exec -a sh `komutu -v jsh` -c" PATH = /; printf; printf "yazın
printf bulunamadı
sh: printf: bulunamadı
% / bin / exec -a sh mksh -c "YOL = /; printf; printf" yazın
printf bulunamadı
sh: printf: bulunamadı
% ksh -c "tür printf; printf"
printf / usr / bin / printf için izlenen bir takma addır
use: printf biçimi [bağımsız değişkenler ...]
% oksh -c "tür printf; printf"
printf / usr / bin / printf için izlenen bir takma addır
use: printf biçimi [bağımsız değişkenler ...]
% jsh -c "tür printf; printf"
printf karma (/ usr / bin / printf)
use: printf biçimi [bağımsız değişkenler ...]
% mksh -c "printf; printf" yazın
printf / usr / bin / printf için izlenen bir takma addır
use: printf biçimi [bağımsız değişkenler ...]
$
PATH
bir sistem için bir ikili varlığın olmasını gerektirir yürütülecek - o zaman lütfen bu konuda sorunuzu belirtin.