GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan Antara Perintah Bawaan Dan Yang Tidak?

Apakah ada perbedaan intrinsik antara perintah bawaan dan perintah lain yang secara nominal dapat melakukan hal yang sama?

misalnya. Apakah bawaan mendapatkan perlakuan "khusus"? … apakah ada lebih sedikit overhead yang menjalankannya? .. atau apakah mereka hanya 'dibangun di dalam'; seperti dasbor mobil Anda?

…dan apakah ada daftar definitif (saat ini) dari built-in ini?

Jawaban yang Diterima:

Dari komentar Anda, sepertinya Anda bingung tentang apa sebenarnya cangkang adalah. Kernel bertanggung jawab untuk mengelola sistem. Ini adalah bagian yang benar-benar memuat dan menjalankan program, mengakses file, mengalokasikan memori, dll. Tetapi kernel tidak memiliki antarmuka pengguna; Anda hanya dapat berkomunikasi dengannya dengan menggunakan program lain sebagai perantara.

Shell adalah program yang mencetak prompt, membaca baris input dari Anda, dan kemudian menafsirkannya sebagai satu atau lebih perintah untuk memanipulasi file atau menjalankan program lain. Sebelum penemuan GUI, shell adalah antarmuka pengguna utama dari sebuah OS. Pada MS-DOS, shell itu disebut command.com dan hanya sedikit orang yang pernah mencoba menggunakan yang berbeda. Namun, di Unix, sudah lama ada banyak shell yang dapat dipilih pengguna.

Mereka dapat dibagi menjadi 3 jenis. Shell yang kompatibel dengan Bourne menggunakan sintaks yang diturunkan dari shell Bourne asli. Cangkang C menggunakan sintaks dari cangkang C asli. Kemudian ada shell nontradisional yang menciptakan sintaksnya sendiri, atau meminjam satu dari beberapa bahasa pemrograman, dan umumnya kurang populer daripada dua jenis pertama.

Perintah bawaan hanyalah sebuah perintah yang dijalankan sendiri oleh shell, alih-alih menafsirkannya sebagai permintaan untuk memuat dan menjalankan beberapa program lain. Ini memiliki dua efek utama. Pertama, biasanya lebih cepat, karena memuat dan menjalankan program membutuhkan waktu. Tentu saja, semakin lama waktu yang dibutuhkan untuk menjalankan perintah, semakin kecil signifikan waktu buka dibandingkan dengan keseluruhan waktu berjalan (karena waktu buka cukup konstan).

Kedua, perintah bawaan dapat memengaruhi keadaan internal shell. Itu sebabnya perintah seperti cd harus built-in, karena program eksternal tidak dapat mengubah direktori shell saat ini. Perintah lain, seperti echo , mungkin sudah terpasang untuk efisiensi, tetapi tidak ada alasan intrinsik bahwa mereka tidak bisa menjadi perintah eksternal.

Perintah mana yang built-in tergantung pada shell yang Anda gunakan. Anda harus berkonsultasi dengan dokumentasinya untuk daftar (mis., bash Perintah bawaan tercantum dalam Bab 4 manualnya). type command dapat memberi tahu Anda jika sebuah perintah sudah ada di dalamnya (jika shell Anda kompatibel dengan POSIX), karena POSIX memerlukan type menjadi bawaan. Jika which bukan built-in di shell Anda, maka shell Anda mungkin tidak akan tahu tentang built-in shell Anda, tetapi hanya akan mencari program eksternal.

Terkait:Mengecualikan beberapa perintah agar tidak disimpan dalam riwayat bash?
Linux
  1. Perbedaan Antara "...", '...', $'...', Dan $"..." Kutipan Di Shell?

  2. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  3. Perbedaan Antara Perpipaan Dan Ekspansi Perintah?

  1. Perbedaan Antara Shell Login dan Shell Non-login?

  2. Linux – Apa Perbedaan Antara `su -` Dan `su –login`?

  3. Perbedaan Nss dan Pam?

  1. Perbedaan Penggunaan Antara Variabel Shell Dan Variabel Lingkungan?

  2. Apa Perbedaan Antara Sudo Su – Dan Sudo Su —?

  3. Perbedaan antara '{}' dan {} dalam perintah find?