Dari sekian aplikasi di desktop, satu jendela hitam berisi teks adalah yang paling menentukan produktivitas kita: terminal. Namun “terminal” sebenarnya adalah dua program berbeda yang bekerja berlapis — jendela grafisnya dan penerjemah perintah di dalamnya — dan membedakan keduanya menjelaskan banyak perilaku, termasuk mengapa kadang pengaturan kita “tidak terbaca”. Pada Chapter ini kita kenali pilihan terminal emulator dan shell, lalu bedah tuntas urutan berkas startup yang dijalankan saat sesi dibuka.
Terminal Emulator: Jendela Teksnya #
Terminal emulator adalah program grafis yang menyediakan jendela tempat kita mengetik. Ia tidak mengerti perintah — tugasnya hanya menampilkan teks, meneruskan ketikan, dan mengelola jendelanya. Setiap DE membawa pilihan bawaan, dan banyak alternatif independen yang bisa dipasang di DE mana pun:
| Terminal emulator | Asal | Ciri khas |
|---|---|---|
| GNOME Terminal | GNOME | lengkap, profil warna dan tab |
| Konsole | KDE Plasma | terintegrasi Plasma, split view |
| xterm | independen | emulator asli era X11, berada di hampir semua sistem |
| Alacritty | independen | render lewat GPU, konfigurasi berkas teks |
| kitty | independen | render GPU, fitur ekstra seperti tampilan gambar |
GNOME juga menyediakan Console, terminal sederhana untuk pengguna awam yang mulai dibawa rilis GNOME terbaru. Di luar daftar tersebut pilihannya masih panjang — yang penting dipahami: mengganti terminal emulator tidak mengubah perilaku perintah apa pun, karena perintah diterjemahkan oleh lapisan berikutnya.
Shell: Penerjemah Perintahnya #
Shell adalah program yang berjalan di dalam jendela terminal: membaca baris yang kita ketik, menerjemahkannya, menjalankan programnya, lalu mengembalikan hasil ke layar. Shell login kita tercatat di kolom terakhir /etc/passwd dan tersalin ke variabel lingkungan SHELL. Tiga shell yang paling sering dijumpai:
| Shell | Kekuatan | Catatan |
|---|---|---|
| bash | bawaan hampir semua distro, standar skrip | diajarkan tuntas di Section Command Line |
| zsh | pelengkapan dan tema interaktif kaya | bawaan macOS |
| fish | saran saat mengetik, sangat ramah pemula | sintaks default-nya tidak POSIX |
bash adalah pilihan aman yang menjadi acuan seluruh Course ini; zsh dan fish layak dicoba setelah kita nyaman, karena keduanya lebih nikmat dipakai interaktif. Klasifikasi lengkapnya dirangkum di halaman shell di ArchWiki
, sedangkan aturan pembacaan berkas startupnya dispesifikasikan pada halaman manual bash
.
Login Shell versus Non-Login Shell #
Bash membedakan dua cara sesi dimulai. Login shell terjadi ketika kita mengautentikasi: login di layar console, koneksi SSH, atau awal sesi desktop. Shell jenis ini membaca /etc/profile lalu berkas pertama yang ditemukan di home directory: ~/.bash_profile, ~/.bash_login, atau ~/.profile. Non-login shell interaktif — misalnya jendela terminal yang kita buka dari dalam desktop — melewati ketiganya dan membaca berkas rc milik sistem (di Debian dan Ubuntu: /etc/bash.bashrc) lalu ~/.bashrc. Pemisahan inilah penyebab klasik pengaturan “hilang”: variabel yang kita taruh di ~/.bash_profile tidak terbaca oleh terminal GUI.
Urutan tersebut bisa kita buktikan sendiri tanpa menyentuh berkas asli kita: cukup alihkan variabel HOME ke folder latihan, karena bash membaca berkas startup relatif terhadap HOME yang sedang berlaku. Opsi -l memerintahkan bash berperan sebagai login shell:
mkdir -p latihan-home
printf 'echo "~/.bash_profile dibaca"\n' > latihan-home/.bash_profile
HOME=~/latihan-home bash -lc 'echo "perintah kita berjalan setelahnya"'Output yang Dihasilkan:
~/.bash_profile dibaca
perintah kita berjalan setelahnyaSebaliknya, bash tanpa -l adalah shell non-login yang sama dengan terminal GUI — berkas profil dilewati:
mkdir -p latihan-home
printf 'echo "~/.bash_profile dibaca"\n' > latihan-home/.bash_profile
HOME=~/latihan-home bash -c 'echo "shell non-login melewati ~/.bash_profile"'Output yang Dihasilkan:
shell non-login melewati ~/.bash_profileMari kita telaah kedua blok di atas:
- Baris
mkdir -p latihan-home: membuat folder latihan yang berperan sebagai home directory palsu — berkas asli kita tidak tersentuh sedikit pun. - Baris
printf ... > latihan-home/.bash_profile: membuat berkas profil latihan berisi satu perintahecho;printfdipakai karena menghasilkan baris baru\ndengan pasti, tidak sepertiechoyang perilakunya berbeda antar versi. - Baris
HOME=~/latihan-home bash -lc '...'(blok pertama): menjalankan bash baru denganHOMEyang dialihkan ke folder latihan — output membuktikan~/.bash_profiledibaca lebih dulu, baru perintah kita. - Baris
HOME=~/latihan-home bash -c '...'(blok kedua): sama persis tanpa-l; output-nya membuktikan berkas profil dilewati, persis perilaku terminal GUI.
Jembatan antara dua dunia itu sudah dirakit oleh distro. Pada Debian dan Ubuntu, ~/.profile bawaan pengguna baru secara eksplisit menjalankan ~/.bashrc — pola yang sama dipakai banyak distro di ~/.bash_profile. Kita bisa meniru pola tersebut di folder latihan untuk melihat efeknya:
mkdir -p latihan-home
printf '. "$HOME/.bashrc"\n' > latihan-home/.bash_profile
printf 'echo "~/.bashrc dibaca lewat profile"\n' > latihan-home/.bashrc
HOME=~/latihan-home bash -lc 'true'Output yang Dihasilkan:
~/.bashrc dibaca lewat profileBaris kedua mengisi ~/.bash_profile dengan tanda titik (.) — bentuk singkat perintah source — yang menjalankan isi ~/.bashrc di shell yang sama. Baris ketiga mengisi ~/.bashrc dengan satu echo. Baris terakhir menjalankan login shell dengan perintah true yang tidak menghasilkan apa pun, sehingga satu-satunya output adalah bukti bahwa .bashrc ikut tereksekusi lewat profile.
Dengan terminal dan shell yang kini jelas perannya, kita siap mengelola file dalam jumlah besar tanpa harus mengetik satu perintah pun — lewat aplikasi grafis bernama file manager, materi Chapter File Manager.