Ada dua kelas builtin:
Beberapa perintah harus dibangun ke dalam program shell itu sendiri karena mereka tidak dapat bekerja jika itu eksternal.
cd
adalah salah satunya karena jika itu eksternal, itu hanya bisa mengubah direktori sendiri; itu tidak dapat memengaruhi direktori kerja shell saat ini. (Lihat juga: Mengapa cd
bukan program? )
Kelas perintah lain dibangun ke dalam shell murni untuk efisiensi.
The halaman manual memiliki bagian di builtin yang menyebutkan , , dan sebagai contoh perintah di kelas ini.dash
printf
echo
test
Sistem Unix selalu menyertakan executable terpisah untuk perintah di kelas kedua itu. Eksekusi terpisah ini masih tersedia di setiap sistem Unixy yang saya gunakan, meskipun mereka juga dibangun di setiap shell yang mungkin Anda gunakan. ( POSIX sebenarnya mengharuskan executable ini hadir.)
Saya percaya telah echo
dibangun ke dalam shell di AT&T Unix System V Release 3.1. Saya mendasarkannya pada perbandingan dua edisi manual yang berbeda untuk sistem AT & Ts 3B1 seri Unix . Seseorang telah dengan ramah memindai edisi tahun 1986 dari manual ini dan menempatkannya secara online ; ini sesuai dengan rilis asli SVR3. Anda dapat melihat bahwa echo
itu tidak ada dalam daftar di halaman 523 dari Panduan Pengguna Sistem V UNIX, Volume II , di mana Anda akan mengharapkannya jika perintah dibangun ke dalam shell. Dalam salinan koran lokal saya manual SVR3.1 dari tahun 1987, echo
yang tercantum dalam bagian manual.
Saya cukup yakin ini bukan inovasi CSRG Berkeley yang dibawa AT&T ke rumah. 4.3BSD keluar tahun yang sama dengan SVR3, 1986, tetapi jika Anda melihat halaman 4.3.1 sh.1 , Anda melihat bahwa echo
itu tidak ada dalam daftar "Perintah Khusus" daftar perintah built-in. Jika CSRG melakukan ini, itu berarti kita menginginkan sumber yang terdokumentasi untuk membuktikannya.
Pada titik ini, Anda mungkin bertanya-tanya apakah echo
dibangun ke dalam shell lebih awal dari SVR3.1 dan bahwa fakta ini tidak didokumentasikan sampai saat itu. Kode sumber pra-SVR3 AT&T Unix terbaru yang tersedia bagi saya ada di tarball PDP-11 System III , di mana Anda akan menemukan kode sumber shell Bourne. Anda tidak akan menemukan echo
di tabel perintah builtin, yang ada di /usr/src/cmd/sh/msg.c
. Berdasarkan cap waktu di file itu, itu membuktikan bahwa echo
pasti tidak ada di shell pada tahun 1980.
Hal sepele
Direktori yang sama juga berisi file yang disebut builtin.c
yang tidak berisi apa-apa untuk pertanyaan ini, tetapi kami menemukan komentar menarik ini:
/*
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..
*/