GNU/Linux >> Belajar Linux >  >> Linux

Apa perbedaan antara konsol, terminal, dan shell?

Saya melihat banyak pertanyaan yang mirip, tetapi pertanyaan itu sendiri menunjukkan kesalahpahaman mendasar tentang beberapa istilah penting.

  • Mengapa saya menggunakan Terminal Windows melalui PowerShell?
  • Saya tidak membutuhkan WSL untuk bash, saya menggunakan Cygwin.
  • Dapatkah saya menggunakan conemu dengan PowerShell Core atau apakah saya perlu menggunakan Terminal Windows?

Mari kita mulai dengan glosarium dan mengklarifikasi beberapa kata terlebih dahulu.

Terminal

Kata Terminal berasal dari kata terminasi, yang menunjukkan bahwa itu adalah ujung pengakhiran atau akhir "terminal" dari suatu proses komunikasi. Anda akan sering mendengar "terminal bodoh" ketika mengacu pada lingkungan berbasis teks di mana komputer yang Anda duduki hanya mengambil input dan menampilkan teks sementara pekerjaan sebenarnya terjadi di ujung yang lain di mainframe atau komputer besar.

TTY atau "teletypewriter" adalah jenis terminal pertama. Daripada layar Anda akan memiliki mesin tik literal di depan Anda. Saat Anda mengetiknya, Anda melihat teks di selembar kertas DAN memasukkan teks itu ke komputer. Saat komputer itu membalas, Anda akan melihat mesin tik otomatis mengetik di kertas yang sama.

Ketika kami merujuk ke Terminal dalam pengertian perangkat lunak, kami mengacu pada versi perangkat lunak literal dari TTY atau Terminal. Terminal Windows adalah itu. Ini sangat bagus dalam menampilkan output tekstual. Itu dapat menerima masukan dan menyampaikannya. Tapi Terminal tidak pintar. Itu tidak benar-benar memproses masukan Anda, tidak melihat file Anda atau berpikir .

Konsol

Orang-orang di pertengahan abad ke-20 akan memiliki perabot di ruang tamu mereka yang disebut konsol atau kabinet konsol. Konsol dalam konteks komputer adalah konsol atau kabinet dengan layar dan keyboard yang digabungkan di dalamnya. Tapi, itu secara efektif Terminal. Secara teknis Konsol adalah perangkat dan Terminal sekarang menjadi program perangkat lunak di dalam Konsol.

Di dunia perangkat lunak, Terminal dan Konsol, untuk semua maksud, identik.

Cangkang

Shell adalah program tempat terminal mengirimkan input pengguna. Shell menghasilkan output dan meneruskannya kembali ke terminal untuk ditampilkan. Berikut beberapa contoh Shell:

  • bash, ikan, zsh, ksh, sh, tsch
  • PowerShell, pwsh
  • cmd, yori, 4dos, command.com

Inilah poin penting yang seharusnya lebih masuk akal sekarang karena Anda memiliki terminal ini - Pilihan shell Anda tidak dan tidak seharusnya mendikte pilihan aplikasi terminal Anda.

Selain: WSL dan WSL2 (Subsistem Windows untuk Linux) adalah Linux lokal lengkap (atau banyak Linux) yang berjalan di Windows 10. Mereka penuh dan nyata. WSL2 mengirimkan kernel Linux asli dan berjalan di Windows. Cygwin BUKAN Linux. Cygwin adalah kumpulan besar alat GNU dan Open Source yang menyediakan fungsionalitas yang mirip dengan Linux di Windows - tetapi itu bukan Linux. Ini adalah simulacrum. Ini adalah utilitas GNU yang dikompilasi terhadap Win32. Ini bagus, tetapi penting bagi Anda untuk mengetahui apa perbedaannya. Cygwin memungkinkan Anda menjalankan skrip bash shell Anda, tetapi itu TIDAK akan menjalankan Apache, Docker, atau aplikasi Linux dan binari ELF nyata lainnya.

Pilihan Konsol Windows Anda?

Ada sejumlah shell yang dikirimkan bersama Windows. Inilah beberapa yang saya jalankan sekarang. Perhatikan "chrome" atau batas dan judul di sekitarnya? Kerang-kerang itu semuanya di-host oleh konsol Windows lama yang belum pernah Anda dengar yang disebut conhost.exe. Anda dapat pergi ke command prompt, ketik powershell, cmd, atau ubuntu dan sejumlah shell akan berjalan. Conhost melakukan pekerjaan input dan output.

Sekarang, lupakan conhost itu ada, karena menyebalkan - sudah sangat tua.

Konsol Pseudo, Terminal Pseudo, PTY, TTY Pseudo (ConPTY)

Terminal Pseudo adalah emulator terminal atau antarmuka perangkat lunak yang mengemulasi terminal. Mereka berpura-pura menjadi terminal seperti yang di atas. *Sistem Nix telah lama memiliki infrastruktur pseudo-terminal (PTY) dan sekarang Windows sebagai pseudoconsole (ConPTY) juga.

Antarmuka ConPTY baru Window adalah masa depan konsol dan terminal di Windows. Jika Anda memilih aplikasi konsol pihak ketiga (non-built-in) untuk Windows, pastikan itu mendukung ConPTY dan itu akan menjadi pengalaman yang lebih baik daripada beberapa konsol lama yang menggunakan pengikisan layar atau peretasan lainnya.

Kembali ke Konsol Windows pilihan Anda

Mengingat ada banyak shell yang dapat Anda gunakan di Windows, ada banyak konsol pihak ketiga yang dapat Anda gunakan jika Anda tidak menyukai conhost.exe (dan seharusnya tidak).

  • Hiper
  • ConEmu
  • cmder
  • Konsol2
  • ConsoleZ
    • Berakhir
    • Terminal Lancar
    • ZOC
    • MobaXterm
    • Babun (mati)
    • 4NT/jpSoftware (tidak gratis)
    • Dempul
    • MinTTY
    • Terminal Windows (gratis di Microsoft Store)
    • XTermjs - komponen TypeScript yang memungkinkan Anda mengintegrasikan terminal ke dalam aplikasi Anda
    • VSCode menyertakan Terminal
    • Pratinjau Visual Studio 2019 menyertakan Terminal

    Semua Terminal ini mendukung SEMUA cangkang di atas dan semua cangkang yang saya lewatkan. Karena shell bukan terminal. Pilih salah satu yang membuatmu bahagia. Saya menggunakan PowerShell Core dan Ubuntu di WSL2 di Terminal Windows.

    Semoga ini bisa membantu memperjelas semuanya.

    Sponsor: Menderita karena kurangnya kejelasan seputar bug perangkat lunak? Berikan pelanggan Anda pengalaman yang pantas dan diharapkan dengan pemantauan kesalahan dari Raygun.com. Instal dalam hitungan menit, coba hari ini!


    Linux
    1. Perbedaan Antara Perintah Bawaan Dan Yang Tidak?

    2. Perbedaan Antara "...", '...', $'...', Dan $"..." Kutipan Di Shell?

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

    1. Perbedaan Nss dan Pam?

    2. Apa perbedaan antara &> dan >&di bash?

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

    1. Perbedaan Tepat Antara A 'terminal', A 'shell', A 'tty' Dan A 'konsol'?

    2. Apa perbedaan antara ls dan l?

    3. Perbedaan antara perintah dalam skrip bash dan perintah di terminal