Pada episode ini kita akan menyimpan opsi favorit curl di file konfigurasi, memakai --config untuk proyek tertentu, serta memahami cara curl membaca environment variable proxy dan override-nya.

Di episode 7 kalian sudah menguasai transfer file — dari download dengan resume hingga upload ke FTP dan SFTP. Pada episode kali ini kita akan merapikan semuanya. Bayangkan kalian harus menulis -u user:pass plus --progress-bar plus --connect-timeout 10 di setiap perintah, berulang kali setiap hari. Cepat atau lambat pasti ada yang terlupa atau salah ketik. Solusinya adalah konfigurasi: menaruh opsi default di satu tempat, lalu membiarkan curl membacanya secara otomatis.
Ada dua mekanisme yang akan kita bedah: file konfigurasi (untuk opsi yang ingin dipertahankan) dan environment variable (untuk pengaturan yang bergantung pada lingkungan, khususnya proxy). Keduanya bekerja di belakang layar — begitu dipahami, kalian akan melihat curl berubah dari alat yang ribet menjadi alat yang "sudah terpasang sesuai selera".
~/.curlrccurl membaca file konfigurasi sebelum memproses argumen baris perintah. File default-nya adalah ~/.curlrc — berlaku untuk semua sesi curl milik user. Formatnya sederhana: satu baris berisi satu opsi, ditulis tanpa tanda strip di depan. Komentar diawali #.
# Opsi default untuk semua request curl
user-agent = "devvnull-bot/1.0"
connect-timeout = 10
max-time = 60
silent
show-error
follow-redirects
retry = 3
retry-delay = 2
# Jangan simpan output apa pun selain yang dibutuhkan
location-trustedSetiap baris adalah opsi yang sama persis dengan flag di command line, hanya tanpa strip ganda. silent setara dengan -s, follow-redirects setara dengan -L. Begitu file ini ada, setiap perintah curl di terminal kalian otomatis memakai timeout 10 detik dan mencoba ulang sampai tiga kali — tanpa harus mengetikkannya lagi. Inilah kekuatan utama config file: default yang konsisten di semua sesi.
Prioritasnya berjenjang dan penting untuk diingat:
Artinya, menulis --connect-timeout 30 di command line akan mengalahkan connect-timeout = 10 di ~/.curlrc untuk request itu saja. File konfigurasi bukan penjara — ia hanya jaring pengaman.
--configUntuk konfigurasi yang berbeda-beda antar proyek atau environment, jangan mengotori ~/.curlrc — gunakan opsi --config yang memuat file tertentu. Ini mirip --env-file pada tools modern: satu file untuk staging, satu lagi untuk produksi, dan file mana yang dipakai ditentukan saat menjalankan perintah.
# Konfigurasi khusus untuk mengakses environment produksi
user-agent = "devvnull-cron/1.0"
connect-timeout = 5
max-time = 30
retry = 2
header = "Accept: application/json"
header = "X-Client: deploy-bot"
# Sertakan kredensial dari environment
user = "budi"curl --config .curlrc-prod https://api.example.com/healthPerhatikan dua hal. Pertama, opsi header bisa diulang — setiap baris menambahkan satu header, sehingga bisa mengirim beberapa header sekaligus. Kedua, kalian bisa menggabungkan --config dengan flag command line; opsi di command line tetap menang. Untuk project yang butuh autentikasi berbeda-beda, pola "satu config file per environment" jauh lebih rapi daripada menulis -u di setiap script.
Tip
Opsi --config bisa dipakai lebih dari sekali, misalnya curl --config base.rc --config staging.rc URL. File yang disebut belakangan dianggap muncul kemudian, sehingga bisa meng-override opsi dari file sebelumnya. Susun seperti ini untuk membangun konfigurasi berlapis: file dasar berisi opsi umum, file kedua berisi kustomisasi environment.
Salah satu alasan orang kadang "tidak sadar" curl berjalan lewat proxy adalah karena curl membaca environment variable secara otomatis — tanpa flag apa pun. Variabel yang dikenali:
http_proxy — proxy untuk semua URL dengan skema http.https_proxy — proxy untuk URL dengan skema https.all_proxy — proxy untuk semua protokol, dipakai bila variabel spesifik skema tidak ada.no_proxy — daftar host yang harus dilewati tanpa proxy.export http_proxy="http://proxy.corp:8080"
export https_proxy="http://proxy.corp:8080"
export no_proxy="localhost,127.0.0.1,*.internal.example.com"
curl -s https://api.example.com/usersCurl membaca variabel baik huruf kecil maupun besar (misalnya HTTP_PROXY), dengan prioritas pada huruf kecil. Ini berarti mengekspor https_proxy sekali di ~/.bashrc sudah cukup untuk membuat semua curl di laptop mengalir lewat proxy perusahaan — tanpa perlu menyentuh satu perintah pun.
Untuk menonaktifkan atau mempersempit proxy pada request tertentu, gunakan --noproxy:
curl --noproxy "*.internal.example.com" -s \
https://internal.example.com/api/healthNilai --noproxy "*" mematikan semua proxy untuk request itu, sekaligus mengesampingkan seluruh environment variable proxy — berguna saat kalian tahu host tujuan harus diakses langsung.
Important
Hati-hati saat mendefinisikan no_proxy di lingkungan tim: jika daftar host pengecualian terlalu sempit, traffic internal bisa diam-diam lewat proxy. Sebaliknya, jika terlalu luas — misalnya * — proxy tidak akan pernah terpakai. Konsistenkan definisi no_proxy di level tim, bukan di memori masing-masing orang.
-qAda kalanya ~/.curlrc justru menjadi gangguan — misalnya saat meniru perilaku curl polos di mesin lain, atau saat opsi default di config file membuat request tampak aneh dan kalian ingin tahu penyebabnya. Untuk itu ada -q (alias --disable):
curl -q https://api.example.com/healthDengan -q, curl tidak membaca config file sama sekali — baik ~/.curlrc maupun file yang dipanggil --config — dan kembali ke default bawaan. Ini alat debugging yang sangat berguna: jika sebuah request berperilaku aneh, jalankan sekali dengan -q. Kalau perilakunya normal setelah -q, penyebabnya pasti ada di salah satu config file; kalau masih aneh, masalahnya ada di command line kalian sendiri.
Episode 8 membekali kalian dengan dua lapis konfigurasi: file konfigurasi untuk opsi yang menetap — ~/.curlrc untuk default global dan --config untuk konfigurasi per-proyek atau per-environment — serta environment variable untuk pengaturan yang bergantung pada lingkungan, khususnya http_proxy, https_proxy, all_proxy, dan no_proxy dengan override --noproxy. Jangan lupa -q untuk menonaktifkan config file saat debugging.
Yang perlu diingat: config file adalah tempat opsi menetap, command line adalah tempat override. Semakin rapi kalian menata keduanya, semakin sedikit flag yang harus dihafal setiap hari.
Di episode 9 berikutnya kita akan memperdalam topik proxy dan networking — bagaimana memilih proxy HTTP, HTTPS, atau SOCKS5, menangani autentikasi proxy, memanipulasi DNS dengan --resolve, dan memecahkan masalah koneksi. Sampai jumpa!