Apakah terminal dan shell sama?

29

Saya tahu ini mungkin terdengar bodoh tetapi saya hanya ingin tahu apakah benar-benar ada perbedaan antara dua kata yang digunakan di dunia Linux. Saya tahu bahwa Shell adalah Antarmuka Baris Perintah dan memiliki banyak varian seperti Bash, Korn, dll. Dan saya juga tahu bahwa Ctrl + Alt + T meluncurkan terminal di Ubuntu. Saya hanya ingin menghubungkan kedua titik ini.

Apakah ini berarti terminal adalah jendela yang terbuka dan shell adalah program yang berjalan di belakang untuk menafsirkan perintah yang diketik dalam jendela? Atau apakah mereka sama di mana terminal adalah istilah umum yang digunakan untuk abstrak konsep Shell, dll?

Apa yang membedakan kedua kata itu?

Vamsi Emani
sumber

Jawaban:

30

Emulator terminal (sering disebut terminal) adalah "hanya jendela", ya. Ini menjalankan program berbasis teks, yang secara default adalah shell login Anda (yang bash di Ubuntu). Saat Anda mengetik karakter di jendela, terminal menggambar karakter ini di jendela selain mengirimnya ke stdin shell (atau program lain). Karakter yang dihasilkan oleh shell akan stdout dan stderr dikirim ke terminal, yang kemudian akan menarik karakter-karakter ini ke jendela.

Jadi ya, shell dan terminal emulator adalah program yang sepenuhnya terpisah, dan keduanya dapat digunakan tanpa yang lain.

geirha
sumber
2
Bagaimana Anda bisa menggunakan shell tanpa terminal?
Koray Tugay
5
@ KorayTugay, ketika Anda menjalankan skrip shell dari cron atau melalui peluncur desktop (di mana Anda belum memeriksa "run in terminal"), Anda menggunakan shell tanpa terminal.
geirha
8

Saya pikir pertanyaan ini telah dieksplorasi cukup menyeluruh di situs pertukaran stack Unix dan Linux: Perbedaan antara shell, konsol dan terminal

Geeb
sumber
3
Mungkin Anda dapat menambahkan bagian-bagian penting tautan ke dalam jawaban Anda?
jokerdino
Ini bukan jawaban, ini komentar.
Koray Tugay
6

Ya, terminal emulator dan shell adalah dua program yang berbeda. Seperti yang Anda ketahui, salah satu contoh perbedaannya adalah meluncurkan jendela terminal dapat menjalankan shell yang berbeda tergantung pada apa yang telah Anda konfigurasikan (bash, tcsh, ksh, ash, bahkan python!).

Perbedaan lainnya adalah terdapat lebih banyak emulator terminal dari pada yang standar: gnome-terminal, beberapa varietas xterm, konsole (untuk KDE), dll. (Lihat: http://www.howtogeek.com/howto/ubuntu/set- the-default-terminal-emulator-on-ubuntu-linux / ). Semua shell dapat dijalankan di salah satu emulator terminal ini, tanpa banyak kesulitan.

Perbedaan ketiga adalah bahwa, selain menjalankan perintah shell, Anda juga dapat memulai aplikasi interaktif tertentu di emulator terminal Anda, dan mereka akan berjalan di jendela yang sama (dan masih mengandalkan program emulator terminal yang sama untuk menangani grafik yang sebenarnya), seperti editor teks vim, RPG nethack, dan lainnya. Jika Anda mau, Anda dapat mengatur profil di emulator terminal Anda untuk memulai nethack, katakanlah, secara otomatis ketika Anda membuka tab baru; tidak ada shell yang terlibat, tetapi terminal emulator masih merupakan program yang sama.

Perbedaan keempat adalah Anda dapat melakukan login jarak jauh, menggunakan program seperti ssh, dari dalam jendela terminal. Dalam hal ini, shell Anda (atau program apa pun yang Anda jalankan dari jarak jauh) berjalan di komputer lain, dan program ssh menghubungkannya ke program emulator terminal lokal yang berjalan pada mesin Anda yang menangani gambar.

Jonathan Cast
sumber