Gambaran Umum
Ketika seorang administrator sistem menambahkan shell alternatif atau menyiapkan skrip interaktif khusus sebagai lingkungan login pengguna, utilitas add-shell memegang peranan krusial. Artikel ini mengupas tuntas mekanisme kerja add-shell, pengelolaan berkas daftar putih /etc/shells, integrasi mulus dengan utilitas chsh, hingga prosedur pencopotan shell secara bersih menggunakan remove-shell. Melalui panduan praktis bertahap ini, Anda akan mempelajari standar operasional terbaik dalam mengelola antarmuka sesi akun pengguna di Linux.
1. Peran Sentral Berkas /etc/shells dan Cara Memeriksa Daftar Shell yang Sah
Berkas /etc/shells berfungsi sebagai daftar otentikasi resmi sistem operasi yang menentukan shell apa saja yang diizinkan untuk sesi login interaktif maupun verifikasi layanan jaringan (seperti FTP atau SSH). Untuk melihat barisan interpreter perintah yang saat ini telah terdaftar dan diakui oleh sistem, jalankan instruksi cat /etc/shells:

Hanya path yang tercantum di dalam berkas inilah yang dapat dipilih oleh pengguna biasa ketika mengubah shell default menggunakan perintah chsh. Guna memverifikasi lokasi absolut dari biner shell bawaan yang terpasang di sistem operasi, kita dapat memanfaatkan perintah which bash sh:

Keluaran berupa /usr/bin/bash dan /usr/bin/sh dapat dicocokkan langsung dengan baris-baris pada /etc/shells guna memastikan bahwa seluruh path executable tersebut telah terdaftar dengan benar dan siap dipakai.
2. Instalasi Shell Baru (Zsh) dan Prosedur Pendaftaran via add-shell
Untuk mensimulasikan penerapan lingkungan baris perintah alternatif, kita akan menginstal paket shell populer zsh ke dalam sistem:

Setelah paket terpasang, langkah berikutnya adalah mengidentifikasi path lengkap dari biner zsh menggunakan perintah which zsh:

Jika penelusuran lokasi biner belum menghasilkan path (misalnya karena cache path belum diperbarui atau binary belum siap di lingkungan eksekusi), pemanggilan perintah sudo add-shell $(which zsh) akan dieksekusi tanpa menyertakan argumen path. Akibatnya, sistem menampilkan petunjuk format penggunaan bawaan yaitu add-shell shellname:

Guna memastikan apakah entri zsh sudah tercatat di dalam basis data shell sistem, kita dapat melakukan pencarian pola teks menggunakan perintah grep -E 'zsh$' /etc/shells:

Terminal yang tidak memunculkan baris keluaran apa pun menandakan bahwa path zsh memang belum ditambahkan ke berkas /etc/shells.
3. Merancang Skrip Sesi Terbatas (Restricted Script) dan Mendaftarkannya ke Sistem
Selain program shell biner standar, administrator kerap kali memerlukan skrip khusus—misalnya antarmuka menu terisolasi yang membatasi pergerakan pengguna tertentu. Kita dapat menyiapkan skrip uji coba sederhana dan menyimpannya di /usr/local/bin/custom-menu.sh:

Supaya skrip tersebut dapat dijalankan secara langsung oleh sistem sebagai shell mandiri saat pengguna login, berikan izin eksekusi (executable permission) menggunakan perintah sudo chmod +x /usr/local/bin/custom-menu.sh:

Kini skrip menu kustom siap ditingkatkan statusnya menjadi shell login yang sah. Alih-alih mengedit berkas konfigurasi secara manual yang berisiko merusak struktur berkas, gunakan utilitas resmi sudo add-shell /usr/local/bin/custom-menu.sh untuk mendaftarkannya ke /etc/shells:

Untuk memvalidasi keberhasilan entri baru, tampilkan tiga baris terakhir dari berkas tersebut melalui perintah tail -n 3 /etc/shells:

Tercantumnya path /usr/local/bin/custom-menu.sh di baris paling bawah membuktikan bahwa skrip buatan kita telah resmi diakui oleh sistem operasi sebagai shell login yang valid.
4. Validasi pada Akun Pengguna dan Pembersihan Bersih dengan remove-shell
Langkah krusial berikutnya adalah menguji penerapan shell kustom tersebut pada akun pengguna. Eksekusi rangkaian perintah berikut untuk membuat akun pengujian testuser sekaligus menetapkan skrip menu sebagai shell default-nya:

Mari kita telaah atribut akun yang baru saja dibuat di /etc/passwd dengan menyaring informasinya menggunakan perintah grep '^testuser:' /etc/passwd:

Kolom terakhir pada entri akun memperlihatkan path /usr/local/bin/custom-menu.sh, yang menegaskan bahwa skrip kustom telah aktif dan terpasang sempurna sebagai login shell pengguna.
Setelah sesi pengujian selesai, lingkungan sistem perlu dibersihkan kembali. Pertama, hapus akun uji coba beserta direktori home-nya menggunakan perintah sudo userdel -r testuser 2>/dev/null || true:

Selanjutnya, cabut status otorisasi shell kustom tersebut dari daftar sistem dengan mengeksekusi sudo remove-shell /usr/local/bin/custom-menu.sh. Langkah ini akan menghapus baris terkait dari berkas /etc/shells tanpa mengganggu entri lainnya:

Hapus berkas fisik skrip kustom dari penyimpanan lokal sistem operasi dengan menjalankan sudo rm -f /usr/local/bin/custom-menu.sh:

Untuk memverifikasi bahwa seluruh jejak skrip telah bersih tanpa sisa di /etc/shells, jalankan pemeriksaan akhir melalui grep 'custom-menu.sh' /etc/shells || echo '등록 해제 완료':

Pesan penanda yang muncul di terminal mengonfirmasi bahwa path skrip sudah tidak ditemukan lagi di dalam /etc/shells, menandakan siklus pendaftaran dan pembersihan telah diselesaikan dengan aman.
Melalui penerapan perintah standar seperti add-shell dan remove-shell, konfigurasi shell sistem serta integrasi dengan chsh dapat dikelola secara otomatis, konsisten, dan meminimalkan risiko kesalahan sintaks manual pada infrastruktur Linux Anda.