Shell Watanabe memiliki tiga macam built-in, yang dijelaskan secara rinci dalam manualnya. Semua perintah bawaan juga terdaftar di sana, tetapi kita harus menyimpulkan bahwa sesuatu adalah perintah bawaan "biasa" dari tidak adanya catatan yang mengatakan bahwa perintah itu adalah "khusus" atau "semi-khusus" built-in. Built-in reguler tidak ditandai.
printf
adalah salah satu built-in "biasa" tersebut. Dalam mode asli selalu dipanggil, terlepas dari apakah ada perintah eksternal yang ditemukan oleh nama itu.
$ PATH = / usr / bin
$ printf
printf: perintah ini membutuhkan operan
$ type printf
printf: built-in reguler di / usr / bin / printf
$
$ PATH = /
$ printf
printf: perintah ini membutuhkan operan
$ type printf
printf: built-in biasa (tidak ditemukan dalam $ PATH)
$
Tetapi ketika posixly-correct
opsi shell diatur itu hanya built-in jika perintah eksternal dapat ditemukan di PATH
.
$ set --posixly-correct
$
$ PATH = / usr / bin
$ printf
printf: perintah ini membutuhkan operan
$
$ PATH = /
$ printf
yash: tidak ada perintah `printf '
$
Ini sebenarnya sesuai dengan apa yang dikatakan Single Unix Specification, dan telah mengatakan setidaknya sejak tahun 1997.
Ini berbeda dari shell Z, shell 93 Korn, shell Bourne Again, dan shell Debian Almquist, tidak ada yang menerapkan atau mendokumentasikan perilaku tersebut untuk built-in reguler. Shell Z, misalnya, dokumen yang selalu ada bawaan selalu ditemukan, sebelum langkah yang mencari PATH
. Begitu juga shell Debian Almquist. Dan itulah yang dilakukan oleh semua shell ini, bahkan jika dipanggil seperti sh
opsi turn-on-POSIX mereka.
% / bin / exec -a sh zsh -c "PATH = /; ketik printf; printf"
printf adalah shell builtin
zsh: printf: 1: tidak cukup argumen
% / bin / exec -a sh ksh93 -c "PATH = /; ketik printf; printf"
printf adalah shell builtin
Penggunaan: format [opsi] printf [string ...]
% / bin / exec-bash sh --posix -c "PATH = / ketik printf; printf"
printf adalah shell builtin
printf: penggunaan: format printf [-v var] [argumen]
% / bin / exec-dasbor sh -c "PATH = /; ketik printf; printf"
printf adalah shell builtin
sh: 1: printf: penggunaan: format printf [arg ...]
%
Namun, tidak berjalan printf
saat tidak aktif PATH
adalah perilaku shell PD Korn, shell Heirloom Bourne, dan shell MirBSD Korn; karena mereka tidak memiliki printf
built-in di tempat pertama. ☺
% / bin / exec -a sh `command -v ksh` -c" PATH = /; ketik printf; printf "
printf tidak ditemukan
sh: printf: tidak ditemukan
% / bin / exec -a sh `command -v oksh` -c" PATH = /; ketik printf; printf "
printf tidak ditemukan
sh: printf: tidak ditemukan
% / bin / exec -a sh `command -v jsh` -c" PATH = /; ketik printf; printf "
printf tidak ditemukan
sh: printf: tidak ditemukan
% / bin / exec -a sh mksh -c "PATH = /; ketik printf; printf"
printf tidak ditemukan
sh: printf: tidak ditemukan
% ksh -c "ketik printf; printf"
printf adalah alias yang dilacak untuk / usr / bin / printf
penggunaan: format printf [argumen ...]
% oksh -c "ketik printf; printf"
printf adalah alias yang dilacak untuk / usr / bin / printf
penggunaan: format printf [argumen ...]
% jsh -c "ketik printf; printf"
printf di-hash (/ usr / bin / printf)
penggunaan: format printf [argumen ...]
% mksh -c "ketik printf; printf"
printf adalah alias yang dilacak untuk / usr / bin / printf
penggunaan: format printf [argumen ...]
$
PATH
agar agar built-in reguler untuk dieksekusi - maka silakan ajukan pertanyaan Anda tentang itu.