Jika Anda mengulang satu perintah pendek di Terminal pada Mac Anda, alias mungkin sudah cukup. Jika tugas tersebut memerlukan argumen, beberapa langkah, pengambilan keputusan, atau penggunaan di luar shell interaktif Anda, buatlah skrip. Untuk kasus penengah—terutama perintah yang memerlukan argumen tetapi harus mengubah direktori shell saat ini—pertimbangkan fungsi zsh. Panduan ini membantu Anda memilih berdasarkan apa yang harus dilakukan perintah tersebut dan di mana Anda memerlukannya untuk berfungsi.
Fungsi alias di macOS
Alias adalah nama pendek yang diperluas zsh menjadi teks perintah saat Anda mengetik. Sebagai contoh, jika Anda sering menjalankan git status, Anda dapat menambahkan alias gs='git status' ke ~/.zshrc. Apple mendokumentasikan zsh sebagai shell bawaan Terminal, meskipun shell Mac dapat diubah, jadi periksa pengaturan Anda jika alias berperilaku berbeda dari yang diharapkan. Panduan Terminal Apple
Gunakan alias jika penggantian pada dasarnya bersifat tetap: ejaan yang lebih pendek, opsi standar, atau perintah sederhana yang Anda jalankan secara interaktif. Alias mudah diedit atau dihapus, dan menjaga tindakan lengkap tetap terlihat saat Anda memeriksa definisinya. Di zsh, alias tidak menerima argumen sebagai parameter; alias hanyalah substitusi teks. Hal itu membuat alias kurang cocok saat Anda perlu memasukkan jalur atau nilai lain yang berubah-ubah ke dalam tindakan tersebut. Panduan pengguna Zsh untuk alias
Alias juga terikat pada penguraian (parsing) dan proses awal shell. Definisi yang dimuat dari ~/.zshrc berguna dalam sesi Terminal interaktif, tetapi Anda tidak boleh berasumsi program lain, shell non-interaktif, atau skrip akan membaca file tersebut dan mengenali aliasnya. Jika perintah perlu dipanggil secara andal dari berbagai konteks, gunakan skrip atau antarmuka perintah eksplisit lainnya.
Kapan skrip menjadi pilihan yang lebih baik
Pilihlah skrip ketika tugas yang berulang merupakan suatu prosedur kecil alih-alih perintah yang tetap. Tandanya meliputi adanya beberapa langkah, argumen, pemeriksaan, percabangan, perilaku berhasil atau gagal yang jelas, atau kebutuhan untuk memanggilnya melalui jalur (path) atau dari alat lain. Apple menjelaskan skrip shell sebagai cara untuk menggabungkan alat-alat baris perintah, menangani argumen, dan membuat keputusan berdasarkan kode hasil. Skrip shell juga memiliki perbedaan dialek, jadi pilihlah dan dokumentasikan interpreter daripada berasumsi setiap shell membaca sintaksis yang sama. Panduan Dasar Shell Scripting Apple
Misalnya, jika suatu rutinitas menerima folder proyek sebagai input, memeriksa keberadaannya, lalu menjalankan urutan yang sama di sana, sebuah skrip dapat membuat input tersebut eksplisit dan menata langkah-langkahnya dalam urutan yang mudah dibaca. Sebelum mengotomatiskan perubahan seperti menghapus atau menimpa file, tambahkan pemeriksaan dan buat perilaku kegagalan menjadi jelas. Skrip shell berjalan sebagai perintah dalam konteks eksekusinya sendiri; perubahan direktori di dalamnya tidak dapat diandalkan untuk mengubah direktori shell Terminal pemanggilnya. Zsh mendokumentasikan eksekusi perintah skrip secara terpisah dari eksekusi fungsi dalam shell pemanggil. Eksekusi perintah Zsh
Skrip tidak serta-merta lebih aman atau lebih portabel. Skrip merupakan file tambahan yang harus dirawat, dan perilakunya bergantung pada interpreter, perintah yang tersedia di Mac, izin, serta asumsi tentang jalur atau input. Panduan dasar Apple secara khusus mengingatkan bahwa perbedaan dialek shell dan utilitas platform dapat menyebabkan kegagalan. Buatlah skrip tetap terfokus, gunakan tanda kutip pada ekspansi variabel jika diperlukan, dan uji dengan sampel input yang aman sebelum menggunakannya pada data penting.
Gunakan fungsi zsh untuk kasus penengah
Fungsi sering kali menjadi pilihan terbaik jika Anda memerlukan logika yang dapat digunakan kembali dan argumen di dalam shell Terminal Anda saat ini, tetapi tidak memerlukan file tersendiri. Sebagai contoh, sebuah fungsi dapat menerima argumen direktori, memvalidasinya, lalu melakukan cd ke dalamnya; karena fungsi zsh berjalan dalam proses shell pemanggil, perubahan direktori tersebut tetap bertahan dalam sesi interaktif. Zsh mendokumentasikan bahwa fungsi menerima argumen dan dieksekusi dalam proses yang sama dengan pemanggil. Fungsi Zsh
Tentukan fungsi di ~/.zshrc saat Anda ingin fungsi tersebut tersedia dalam sesi Terminal interaktif. Lebih pilih skrip jika tindakan tersebut harus berfungsi sebagai perintah terpisah, dipanggil oleh alat atau skrip lain, atau lebih mudah dibagikan sebagai sebuah file. Lebih pilih alias jika yang Anda inginkan hanyalah nama yang mudah diingat untuk satu baris perintah yang tetap.
Uji keputusan cepat
Tanyakan apa yang akan berubah jika Anda menjalankan tugas itu lagi. Jika tidak ada yang berubah kecuali nama perintahnya, gunakan alias. Jika ada nilai yang berubah setiap kali dijalankan, seperti folder atau nama file, gunakan fungsi atau skrip yang menerimanya. Jika tugas memiliki langkah-langkah atau keputusan, gunakan skrip. Jika tugas harus mengubah sesi Terminal saat ini, seperti direktori kerjanya, gunakan fungsi.
Kemudian periksa di mana Anda memerlukan perintah tersebut. Hanya di Terminal? Alias atau fungsi di ~/.zshrc mungkin cocok. Perintah yang dapat dipanggil secara terpisah? Gunakan skrip, dengan interpreter yang tepat dan izin yang disengaja. Dibagikan ke Mac lain? Dokumentasikan asumsi dan alat yang diperlukan; skrip shell tidak otomatis portabel hanya karena berjalan di Terminal.
Garis pemisah yang berguna adalah antarmuka tugas tersebut: alias mengganti nama teks perintah yang tetap, fungsi menambahkan perilaku yang dapat digunakan kembali di dalam shell saat ini, dan skrip mengemas prosedur sebagai perintah terpisah. Mulailah dengan opsi paling sederhana yang memenuhi kebutuhan tersebut, dan beralihlah ke fungsi atau skrip ketika argumen, logika, atau tempat perintah harus dijalankan membuat alias menjadi tidak praktis.
Sumber
Mengubah shell default di Terminal pada Mac — Dukungan Apple
Shell Scripting Primer: Introduction — Apple Developer
Command Execution — Zsh
Functions — Zsh