สิ่งที่ชอบใน Open Source Dotfiles บน GitHub: เห็นคนอื่นตั้งค่า .bashrc และ Dotfiles ต่างๆ — แม้ไม่ Ricing หนักแล้ว แต่ยังตื่นเต้นพบ Config ที่ทำให้สวยและเร็วขึ้น
ค้นพบ Dotfiles ของ Tom Hudson — เขาชอบ Script ทุกอย่าง: Symlinks อัตโนมัติ, ติดตั้ง Apps จาก Ubuntu Repo และที่อื่น — ทำให้คิดว่า: "ทำให้ Setup เครื่องใหม่ Replicate เครื่องปัจจุบันได้อัตโนมัติไหม?"
身為喜歡拆東西看原理的人,偶爾會把筆弄壞(通常在外面,備份硬碟不在身邊)。當電腦變成「空殼」時,有個快速、簡單的方法把它恢復原狀,會非常方便。
เทียบกับ Disk Image: Bash Scripts สร้าง/บำรุงรักษา/ย้าย ได้ง่ายกว่า — ไม่ต้อง Special Utilities, แค่ External Transport — เหมือนส่ง "สูตรอาหาร" แทนที่จะส่ง "เค้กทั้งชิ้น"
ยังใช้ได้กับ VM, VPS — เหมาะสำหรับทดลองทำลายล้าง (Forgiving Targets)
หลังจาก Grep, Google, Dig Around — ตอนนี้มี Suite ของ Scripts ทำได้:

ดูวิดีโอการ Setup ได้ที่นี่
ท้ายสุดของ Test Run บน Ubuntu Desktop ใหม่ (Bootable USB) — ทุก Programs และ Settings กลับมาใน ภายใต้ 3 นาที!
บทความครอบคลุม: Ubuntu Desktop (LTS 18.04) — ใช้ได้กับ Linux Desktop Flavors ทั้งหมด (Syntax บางส่วนต่างไป) — 3 พื้นที่หลัก: Linking Dotfiles, Installing Software, Desktop Environment Setup
Dotfiles
Dotfiles = Config Files — อยู่ใน $HOME ควบคุม Appearance/Behavior ของโปรแกรม — ชื่อขึ้นต้น . (Hidden Files)
.bashrc
Commands รันตอน Startup ของ Interactive Non-login Shells — ทุกครั้งที่เปิด Terminal ใหม่ มี Prompt พิมพ์ได้ = .bashrc รันแล้ว
ปรับปรุง Workflow: Aliases ลด Keystrokes, Prompt มี Info, รัน User Programs — ดู .bashrc ของผมบน GitHub
.vimrc
Config Vim (Champion of Text Editors) — Display, Colors, Custom Keybindings — ดู .vimrc ของผมบน GitHub
Dotfiles อื่นๆ: .gitconfig, .tmux.conf — สำรวจ Dotfiles บน GitHub ได้ไอเดียเยอะ!
Linking Dotfiles (Symlinks)
เก็บ Dotfiles ไว้ Central Repo (เช่น ~/github/dotfiles/) Symlink ไปที่ที่โปรแกรมคาดหวัง (มัก $HOME) — เช่น ~/.vimrc → ~/github/dotfiles/.vimrc
Script symlink.sh (ขโมยมาจาก Tom — ขอบคุณ!):
- Check: Symlink มีอยู่แล้วไหม? → ลบและสร้างใหม่
- Check: Regular File/Dir ชื่อเดียวกันมีไหม? → Rename แล้วสร้าง Symlink
- สร้าง Symlink ใหม่
Installing Software
Ubuntu: โปรแกรมส่วนใหญ่ใน Default Repos — apt search <pkg>, sudo apt install <pkg>
บางตัวไม่อยู่ใน Default Repos หรือ Version เก่า → ใช้ PPA (Personal Package Archive) จาก Official Sources
ยังไม่มีใน Repos/PPA → ค้นหา "Installation Command Line" มักเจอวิธีติดตั้ง CLI
Bash Scripts = ชุดคำสั่งรันได้ทีละบรรทัด → Script ติดตั้ง = รวมคำสั่งทั้งหมดในไฟล์
แบ่ง Scripts: aptinstall.sh (Default Repos), programs.sh (External Sources)
Setting up Desktop Environment
Desktop Settings: Keyboard Shortcuts, Workspaces, Sound, Night Mode... ใช้เวลานานมากในการตั้งค่าทุกครั้ง
Settings เก็บใน Non-graphical Format → Manipulate ด้วย Bash ได้!
คำสั่งสำคัญ: gsettings list-recursively — ดู Settings ทั้งหมดของ GNOME
gsettings list-recursively | less— Scroll ดูง่ายgsettings list-recursively | grep 'keyboard'— หา Setting เฉพาะ
เปลี่ยน Setting: gsettings set — Syntax หายาก → ทำใน GUI ก่อน → หา gsettings line ที่เปลี่ยน → Record Value
ดู desktop.sh ของผมบน GitHub เป็นแรงบันดาลใจ
Putting It All Together (Master Script)
Modular Scripts: Symlink, Apt Install, Programs, Desktop — รันบางส่วนได้ (เช่น VPS ไม่ต้อง GUI)
Master Script รันทั้งหมด:
#!/bin/bash
./symlink.sh
./aptinstall.sh
./programs.sh
./desktop.sh
# Get all upgrades
sudo apt upgrade -y
# Reload bash changes
source ~/.bashrc
# Fun hello
figlet "... and we're back!" | lolcat
คำสั่งเดียว จัดการหมด! ./setup.sh
ข้อจำกัด: Scripts ไม่ครอบคลุม "Files" (โค้ด, เอกสาร, Secrets) — ต้อง Backup เอง (External Drive, GitHub/GitLab Repos) — Private Keys/Secrets ไม่ได้จาก Git Ignored Objects → ใส่ Encrypted USB Drives
หวังให้แรงบันดาลใจ — ถ้ามี Settings ดีๆ Share Dotfiles ให้คนอื่นรู้จักด้วย!