What is a shell? 🐚 adalah kerang ajaib?
Dulu Sebelum adanya GUI cara user berinteraksi dengan komputer menggunakan CLI yaitu mengetik baris perintah pada sebuah antarmuka dalam bentuk baris teks seperti 👇.
Jika kamu pernah menggunakan unix/linux mungkin pernah menggunakan program diatas, bahkan mungkin setiap hari menggunakannya untuk mengeksekusi suatu perintah melalui terminal emulator.
User[1] tidak bisa secara langsung berkomunikasi dengan sebuah hardware komputer, maka dari itu kita membutuhkan sebuah sistem operasi; Kernel adalah program yang merupakan inti utama dari sistem operasi komputer.
Kernel memfasilitasi interaksi antara komponen perangkat keras dan perangkat lunak, berperan untuk menangani permintaan input/ouput dari perangkat lunak, selanjutnya menerjemahkannya ke dalam pemrosesan data untuk diintruksikan ke CPU, sehingga Hardware(cpu, memory, devices) mengerti perintah yang dimaksud dari pengguna.
Ketika kita menginputkan suatu perintah pada terminal emulator, kernel tidak langsung mengerti perintah yang kita ketik, kita membutuhkan suatu interface sebagai perantara menuju kernel yaitu Shell.
Shell adalah sebuah command-line interpreter; program yang berperan sebagai penerjemah perintah yang diinputkan oleh User yang melalui terminal, sehingga perintah tersebut bisa dimengerti oleh si Kernel.
Login shell biasanya ditetapkan oleh local System Administrator ketika pada saat pertama user kamu dibuat, kamu bisa lihat login shell yang sedang kamu gunakan dengan perintah dibawah ini.
$ echo $SHELL
# atau
$ echo $0
Setiap shell mempunyai default prompt. beberapa shell yang paling umum:
$ (dollar sign) # sh, ksh, bash
% (percent sign) # csh, tcsh
Terminologi pada shell prompt
Shell prompt adalah tempat dimana kita menuliskan suatu perintah, berikut adalah terminologinya ini membantu, jika kamu ingin mengetahui bagian-bagianya.
Dibawah ini salah satu contoh perintah sederhana untuk menampilkan sebuah arsitektur CPU komputer yang sedang saya gunakan.
Dari perintah yang contohkan, ketika user mengetikan suatu inputan perintah di terminal dan menekan ENTER, maka shell akan mengubah perintah user menjadi bahasa yang bisa dipahami oleh kernel, dan Kernel menerjemahkannya ke dalam pemrosesan data untuk diintruksikan ke Hardware sehingga menghasilkan output yg sesuai dengan perintah user.
Shell mempunyai beberapa macam dan turunan, berikut yang paling umum.
Sedikit penjelasan dari gambar diatas.
- Bourne shell
sh
Dikembangkan oleh Stephen Bourne di Bell Labs, yang kala itu sebagai pengganti Thompson shell(diciptakan Ken Thompson), banyak sistem unix-like tetap memiliki/bin/sh
—yang mana menjadi symbolic link atau hard link, bahkan ketika shell lain yang digunakan tetapsh
adalah sebagai dasarnya, sebagai kompatibilitas perintah. - Korn shell
ksh
Unix shell yang dikembangkan oleh David Korn di Bell Labs, inisialiasi pengembangan ini berdasar pada source code Bourne shell, namun juga memiliki fiturcsh
dansh
, pengembanganya pun pada saat saya menulis ini pun terus terawat. - Bourne again shell
bash
adalah proyek ini open source GNU project memilki kompatibel dengansh
yang menggabungkan fitur penting dariksh
dancsh
, dan menjadi salah satu shell yang paling umum digunakan (umumnya menjadi default shell login Linux dan Apple’s macOS Mojave). - Z shell
zsh
ini mempunyai wadah komunitasnya disebutnya “Oh My Zsh”, plug-in dan themezsh
bisa kita temukan di komunitas ini, saya saat ini menggunakanzsh
, shell ini juga menjadi default dari sistem operasi macOS Catalina, yang menggantikan bash. - friendly interactive shell
fish
yah sesuai dengan deskripsi di web nya, menurut saya shell ini fun banget, fitur yang saya sukai dari shell ini autosuggestions, dan konfigurasi yang mudah melalui web based.
Masih banyak yang belum dijelaskan pada tulisan ini jika masih tertarik, baca lebih banyak dan juga komparasinya masing-masing shell.
Jika kamu tertarik untuk mengubah default shell login pada sistem operasi, kamu bisa menginstall dengan cara mengikuti didokumentasi/cara penginstallan dimasing-masing shell disini saya tidak membahas karena distro yang kita pakai mungkin berbeda-beda.
Untuk menjadikan default shell login pada OS bisa menggunakan perintah ini.
# command
$ sudo chsh [options] [LOGIN]
# contoh penggunaan
$ sudo chsh -s /user/bin/zsh harpi
# mengubah default shell user harpi menjadi zsh shell.
$ reboot
# atau kamu juga bisa mengubah file /etc/passwd dan edit secara manual user shellnya.
# jika masih bingung manfaatkan perintah man untuk melihat manual page.
$ man chsh
Terakhir untuk tulisan ini, shell memilki berbagai macam, pilihlah shell yang sesuai dengan keinginanmu untuk menunjang produktivitas dan sesuaikan dengan kebutuhan, terlalu banyak plugin dan kebingungan memilih tema itu buruk 😁.
Terimakasih sudah baca, penulis menerima kritik dan saran.
Notes
[1] Manusia yang mengoperasikan dan mengendalikan sistem komputer.