Saya menemukan perintah Linux builtin cd
,.
Apa perbedaan antara perintah builtin cd
dan cd
?
Sebenarnya, saya melakukan beberapa penelitian tentang perbedaannya, tetapi saya tidak dapat menemukan penjelasan yang luar biasa dan signifikan tentang hal ini.
bash
shell
cd-command
Goktug
sumber
sumber
Jawaban:
The
cd
perintah built-in, jadi biasanyabuiltin cd
akan melakukan hal yang sama seperticd
. Tetapi ada perbedaan jikacd
didefinisikan ulang sebagai suatu fungsi atau alias, dalam hal inicd
akan memanggil fungsi / alias tetapibuiltin cd
masih akan mengubah direktori (dengan kata lain, akan membuat built-in dapat diakses bahkan jika dihancurkan oleh suatu fungsi.)Sebagai contoh:
Atau dengan alias:
Menggunakan
builtin
juga merupakan cara yang baik untuk mendefinisikancd
fungsi yang melakukan sesuatu dan mengubah direktori (karena memanggilcd
darinya hanya akan terus memanggil fungsi lagi dalam rekursi yang tak ada habisnya.)Sebagai contoh:
sumber
builtin cd mysubdir
dan\cd mysubdir
?cd
, dalam hal ini\cd
akan memotong alias dan menjalankan fungsi. Lihat stackoverflow.com/a/16506263/4518341Dalam kebanyakan kasus, tidak ada perbedaan (tetapi lihat di bawah). The
cd
perintah built-in perintah dalam semua kerang. Itu perlu built-in 1 sebagai perintah eksternal tidak dapat mengubah lingkungan shell yang memohon, dan mengubah direktori kerja merupakan perubahan dalam lingkungannya.The
bash
perintahbuiltin
pasukan shell untuk menggunakan built-in versi perintah, meskipun mungkin ada fungsi shell, alias, atau perintah eksternal yang tersedia dengan nama yang sama.Dalam kasus di mana ada adalah misalnya fungsi shell dengan nama
cd
, makabuiltin cd
akan tidak menyebutnya. Menggunakanbuiltin cd
memintas setiap fungsionalitas kelebihan beban yang mungkin telah ditambahkan melalui fungsi shell atau alias oleh pengguna.Contoh:
The
cd
built-in command dapat kelebihan beban dengan fungsi yang update prompt:di mana
__update_prompt
ada beberapa fungsi lain yang disediakan pengguna yang menghasilkan string.Di
builtin cd
dalam fungsi tidak akan memanggil fungsi secara rekursif. Menggunakanbuiltin cd
dalam shell di mana fungsi ini aktif, juga tidak akan memanggil fungsi.1 Ada Unices dengan
cd
perintah eksternal (macOS, dan, saya percaya, Solaris). Tujuan dari perintah itu, yang tidak dapat mengubah direktori kerja untuk sebuah shell, kemungkinan untuk memenuhi standar POSIX, yang terdaftarcd
sebagai salah satu utilitas eksternal yang harus tersedia (cd
bukan salah satu dari "utilitas builtin khusus") . Ini juga dapat berfungsi sebagai tes untuk melihat apakah mengubah direktori kerja ke direktori tertentu akan dimungkinkan .sumber
cd
perintah eksternal .