Shell config & dotfiles
~/.zshrc กับเพื่อน ตั้ง env, alias, prompt ให้ติดตัวทุก session + source vs restart + framework อย่าง oh-my-zsh/starship
บทที่แล้วใช้ export FOO=bar ตั้ง env var ได้ แต่ปิด terminal ปุ๊บก็หาย ต้องตั้งใหม่ทุกรอบ ซึ่งน่าเบื่อมาก ถ้าอยากให้ EDITOR=code หรือ alias gs="git status" ติดตัวเราทุกครั้งที่เปิด terminal ต้องทำยังไง
คำตอบคือ shell config file ไฟล์พิเศษที่ shell อ่านอัตโนมัติทุกครั้งที่เปิด terminal ใหม่ รู้จักไฟล์นี้แล้วจะเปลี่ยน terminal ธรรมดาให้เป็นสภาพแวดล้อมที่เหมาะกับงานของตัวเองได้
Shell config file คืออะไร
คือไฟล์ที่ shell รันทุกคำสั่งข้างในเหมือนคุณพิมพ์เอง ตอนเปิด terminal ใหม่ shell จะ “source” ไฟล์นี้อัตโนมัติก่อนแสดง prompt ผลคือ env vars, aliases, prompt customization ติดตัวไปทุก session
echo $PROFILEเครื่องหมาย . นำหน้าทำให้เป็น hidden file (จำบท 2) ส่วน $PROFILE ของ Windows ไม่มี . นำหน้า เพราะแต่ละระบบมี convention ต่างกัน
3 อย่างที่ใส่ใน config
1. Environment variables
# ~/.zshrc
export EDITOR="code" # editor default ของ git commit
export NODE_ENV="development"
export PATH="$HOME/.local/bin:$PATH" # เพิ่ม folder ของตัวเองเข้า $PATH2. Aliases (ทางลัด)
alias ชื่อสั้น="คำสั่งยาว" ให้พิมพ์ชื่อสั้นแล้ว shell expand เป็นคำสั่งยาว เหมาะกับคำสั่งที่พิมพ์บ่อย
alias gs="git status"
alias gco="git checkout"
alias gcm="git commit -m"
alias ll="ls -la"
alias ..="cd .."
alias serve="python3 -m http.server"บางคน alias rm เป็น rm -i (interactive) เพื่อบังคับถาม Y/N ก่อนลบ ให้ปลอดภัยขึ้น แต่ระวังตอน script ที่เรียก rm อาจค้างรอ input
3. Prompt customization
ตั้งสี + เพิ่ม git branch + แสดง path ย่อ ให้ prompt ดูน่าใช้ขึ้น หลายคนชอบลง framework อย่าง oh-my-zsh, starship, prezto ที่ดูแล prompt + plugin ให้หมด ไม่ต้องเขียนเอง
ลองเห็น before/after
widget ข้างล่างจำลอง terminal ก่อน load config (prompt ธรรมดา ไม่มี alias ไม่มี env) และหลัง load (prompt สวย พร้อม alias ใช้งานได้) กดโหลดแล้วลองปุ่มทดสอบด้านล่าง เห็นว่า gs ทำอะไรก่อน/หลัง
แก้ config ยังไง
$ code ~/.zshrc # เปิดใน VS Code
$ nano ~/.zshrc # เปิดใน nano (เบื้องต้น)
$ vim ~/.zshrc # เปิดใน vim (advanced)หลังแก้เสร็จ config ยังไม่มีผล กับ terminal ที่เปิดอยู่ ต้อง 1 ใน 2 อย่าง
source ~/.zshrcเพื่อ reload config ใน terminal ปัจจุบัน (ใช้ง่าย ไม่ต้องเปิดใหม่)- ปิด terminal แล้วเปิดใหม่
source คือการให้ shell อ่านไฟล์แล้วรันทุกคำสั่งข้างในเหมือนพิมพ์เอง ย่อๆ ว่า . (dot space) ก็ได้ เช่น . ~/.zshrc
สรุป
- Shell config file = ไฟล์ที่ shell อ่านอัตโนมัติตอนเปิด terminal
- zsh ใช้
~/.zshrc, bash ใช้~/.bashrc, PowerShell ใช้$PROFILE - 3 อย่างที่ใส่: env vars (
export), alias, prompt customization - แก้ config แล้วต้อง
source ~/.zshrcหรือเปิด terminal ใหม่ถึงจะเห็นผล - Framework อย่าง
oh-my-zsh,starshipลงครั้งเดียวได้ setup ครบ
ตอนนี้เรียน terminal ครบเกือบทุกด้านแล้ว บทสุดท้าย (capstone) จะเอาทุกอย่างที่เรียนมาประกอบกันใหม่ ในรูปแบบที่ใช้ได้จริงที่สุดในยุค AI คือ อ่านคำสั่งที่ AI ให้มาแล้วรู้ว่าปลอดภัยไหม รู้จัก exit code อ่าน error ใช้ man/--help และสแกน AI commands หาของอันตรายก่อนกด Enter