Dotfiles များ စီမံခန့်ခွဲခြင်း- သင့်လုပ်ငန်းပတ်ဝန်းကျင်ကို ကိုယ်ပိုင်ပုံစံဖန်တီးခြင်း
ကွန်ပျူတာကို အသုံးပြုတဲ့အခါမှာ command line ကနေ အလုပ်လုပ်သည်ဖြစ်စေ၊ graphical interface (GUI) နဲ့ အလုပ်လုပ်သည်ဖြစ်စေ၊ ကျွန်တော်တို့ရဲ့ လုပ်ငန်းပတ်ဝန်းကျင် (environment) က ကိုယ့်စိတ်ကြိုက် ဖြစ်နေဖို့က အရေးကြီးပါတယ်။ ဒါမှသာ အလုပ်လုပ်ရတာ ပိုမို မြန်ဆန်၊ အဆင်ပြေပြီး ထိရောက်မှု ရှိမှာ ဖြစ်ပါတယ်။ ဒီလို ကိုယ့်ပတ်ဝန်းကျင်ကို စိတ်ကြိုက်ပြင်ဆင်ရာမှာ အဓိကကျတဲ့ အရာတစ်ခုကတော့ dotfiles တွေပဲ ဖြစ်ပါတယ်။
Dotfiles ဆိုတာဘာလဲ။
Dotfiles ဆိုတာက Unix-based (Linux, macOS) စနစ်တွေမှာ ဖိုင်အမည်ရဲ့ အရှေ့မှာ .
(dot) လေး ခံပြီး သိမ်းထားတဲ့ configuration ဖိုင်တွေ ဖြစ်ပါတယ်။ ဥပမာအားဖြင့် .bashrc
, .zshrc
, .vimrc
, .gitconfig
, .tmux.conf
စတာတွေ ဖြစ်ပါတယ်။ ဒီလို .
နဲ့ စထားတဲ့အတွက် default အားဖြင့် သူတို့ကို ဖိုင် Explorer (သို့) command line က ls
လိုမျိုး command တွေနဲ့ ကြည့်ရင် မြင်ရမှာ မဟုတ်ပါဘူး။ ဒါဟာ သူတို့ရဲ့ ရည်ရွယ်ချက်အတိုင်း system ရဲ့ အရေးကြီးတဲ့ setting တွေကို သပ်ရပ်စွာ သိမ်းထားဖို့ ဖြစ်ပါတယ်။
ဒီဖိုင်တွေထဲမှာ ကိုယ်အသုံးပြုတဲ့ shell (bash, zsh), text editor (Vim, Neovim), version control system (Git) စတာတွေအတွက် ကိုယ်ပိုင်စိတ်ကြိုက် setting တွေ၊ alias တွေ၊ function တွေ၊ keyboard shortcut တွေ စတာတွေကို ထည့်သွင်းထားနိုင်ပါတယ်။
Dotfiles တွေက ဘာကြောင့် အရေးကြီးသလဲ။
- ကိုယ်ပိုင်ပုံစံဖန်တီးခြင်း (Personalization): ကိုယ့်ရဲ့ command line prompt ပုံစံကို ပြောင်းတာ၊ Vim ထဲမှာ ကိုယ်ကြိုက်တဲ့ key binding တွေ ထည့်တာ၊ Git ကို ကိုယ့်အကောင့်နဲ့ configure လုပ်တာ စသဖြင့် ကိုယ့်ရဲ့ လုပ်ငန်းပတ်ဝန်းကျင်ကို ကိုယ်နဲ့ အကိုက်ညီဆုံးဖြစ်အောင် ပြင်ဆင်နိုင်ပါတယ်။
- ကုန်ထုတ်စွမ်းအား မြှင့်တင်ခြင်း (Productivity): ကိုယ်အမြဲတမ်း သုံးနေကျ ရှည်လျားတဲ့ command တွေကို alias တိုတိုလေးတွေနဲ့ သတ်မှတ်တာ၊ editor မှာ မကြာခဏ လုပ်ရတဲ့အလုပ်တွေကို macro တွေနဲ့ မှတ်ထားတာ စသဖြင့် အလုပ်တွေကို ပိုမို လျင်မြန်စွာ လုပ်ဆောင်နိုင်စေပါတယ်။
- စနစ်များအကြား တူညီမှုရှိခြင်း (Consistency across Systems): ကွန်ပျူတာ တစ်လုံးမက အသုံးပြုတဲ့သူတွေအတွက် ကိုယ့်ရဲ့ configuration တွေအားလုံးကို ကွန်ပျူတာတိုင်းမှာ တူညီနေအောင် ထားရှိခြင်းက အရေးကြီးပါတယ်။ နေရာတိုင်းမှာ ရင်းနှီးပြီးသား၊ စိတ်ကြိုက်ပြင်ဆင်ပြီးသား ပတ်ဝန်းကျင်အတိုင်း အလုပ်လုပ်နိုင်ပါတယ်။
- ကွန်ပျူတာအသစ်များ တည်ဆောက်ရလွယ်ကူခြင်း (Easy New Machine Setup): ကွန်ပျူတာအသစ် ဝယ်သည်ဖြစ်စေ၊ OS အသစ် တင်သည်ဖြစ်စေ၊ ကိုယ့်ရဲ့ စိတ်ကြိုက် configuration တွေကို အလွယ်တကူ ပြန်လည် ရယူ တည်ဆောက်နိုင်ပါတယ်။
- စိတ်ချရသော Backup (Reliable Backup): အရေးကြီးတဲ့ setting တွေကို ဆုံးရှုံးသွားခြင်းကနေ ကာကွယ်နိုင်ပါတယ်။
စိန်ခေါ်မှု - Dotfiles များကို မည်သို့ စီမံခန့်ခွဲမည်နည်း။
dotfiles တွေရဲ့ အရေးပါပုံကို သိလာပေမယ့်၊ သူတို့ကို ကွန်ပျူတာ အများကြီးမှာ ဘယ်လို ထိန်းသိမ်းမလဲ၊ ပြောင်းလဲမှုတွေကို ဘယ်လို မှတ်တမ်းတင်မလဲ၊ ဘယ်လို backup လုပ်မလဲ ဆိုတာက စိန်ခေါ်မှုတစ်ရပ် ဖြစ်ပါတယ်။ ဖိုင်တွေကို လက်ဖြင့် copy/paste လုပ်ခြင်းဟာ အချိန်ကုန်ပြီး မှားယွင်းနိုင်ခြေ မြင့်မားပါတယ်။
ဖြေရှင်းနည်း - Git ဖြင့် စီမံခန့်ခွဲခြင်း
ဒီစိန်ခေါ်မှုကို ကျော်လွှားနိုင်တဲ့ အကောင်းဆုံး နည်းလမ်းကတော့ Git ကို အသုံးပြုပြီး ကိုယ့်ရဲ့ dotfiles တွေကို version control လုပ်ခြင်း ဖြစ်ပါတယ်။ Git repository တစ်ခုထဲမှာ ကိုယ့်ရဲ့ dotfiles တွေကို သိမ်းထားခြင်းဖြင့်-
- ဖိုင်တွေရဲ့ ပြောင်းလဲမှု မှတ်တမ်းတွေကို ကြည့်ရှုနိုင်မယ်။
- အရင် version တွေကို အလွယ်တကူ ပြန်သွားနိုင်မယ်။
- ကွန်ပျူတာ အများကြီးအကြား ပြောင်းလဲမှုတွေကို sync လုပ်နိုင်မယ်။
- GitHub, GitLab, Bitbucket စတဲ့ cloud service တွေမှာ သိမ်းထားခြင်းဖြင့် backup ရရှိမယ်။
Git ဖြင့် Dotfiles စီမံခန့်ခွဲရန် နည်းလမ်းများ
Git ကို အသုံးပြုပြီး dotfiles စီမံခန့်ခွဲရာမှာ နည်းလမ်းအမျိုးမျိုး ရှိပါတယ်။ အသုံးအများဆုံးနဲ့ နားလည်ရလွယ်ကူတဲ့ နည်းလမ်းတွေကတော့-
- Git Repository + Symbolic Links:
- ကိုယ့်ရဲ့ dotfiles တွေကို သီးခြား folder တစ်ခု (ဥပမာ
~/dotfiles
) ထဲမှာ ထည့်ပြီး အဲဒီ folder ကို Git repository အဖြစ် ပြောင်းလဲပါ။ - ပြီးရင် မူရင်း dotfiles တွေ (ဥပမာ
~/.bashrc
) နေရာမှာ အဲဒီ repository ထဲက ဖိုင်တွေဆီကို symbolic links (symlinks) ချိတ်ဆက်ပေးပါ။ (ဥပမာln -s ~/dotfiles/.bashrc ~/.bashrc
) - ဒီနည်းလမ်းက Git repository ကို ကိုယ့် home directory ထဲမှာ ရှုပ်ပွမနေစေဘဲ သပ်သပ်စီ ခွဲထားနိုင်ပါတယ်။
- ကိုယ့်ရဲ့ dotfiles တွေကို သီးခြား folder တစ်ခု (ဥပမာ
- Bare Git Repository:
- Dotfiles တွေကို bare Git repository (working directory မပါတဲ့ repository) တစ်ခုထဲမှာ တိုက်ရိုက် သိမ်းဆည်းပြီး Git ရဲ့ command တွေကို clever ဖြစ်အောင် သုံးတာပါ။ ဒီနည်းလမ်းက အနည်းငယ် ပိုအဆင့်မြင့်ပါတယ်။
- Dotfile Manager Tools:
- အပေါ်က နည်းလမ်းတွေကို အလိုအလျောက်လုပ်ဆောင်ပေးနိုင်တဲ့ dotfile manager tools တွေ အများအပြား ရှိပါတယ်။ ဥပမာအားဖြင့်
dotbot
,YADM
(Yet Another Dotfiles Manager),GNU Stow
စတာတွေ ဖြစ်ပါတယ်။ ဒီ tool တွေက setup လုပ်ငန်းစဉ်ကို ပိုမို လွယ်ကူမြန်ဆန်စေပါတယ်။
- အပေါ်က နည်းလမ်းတွေကို အလိုအလျောက်လုပ်ဆောင်ပေးနိုင်တဲ့ dotfile manager tools တွေ အများအပြား ရှိပါတယ်။ ဥပမာအားဖြင့်
ဘယ်နည်းလမ်းကို သုံးသည်ဖြစ်စေ၊ အဓိက သဘောတရားက ကိုယ့်ရဲ့ configuration ဖိုင်တွေကို Git နဲ့ ထိန်းသိမ်းပြီး ကွန်ပျူတာတွေဆီ ဖြန့်ကျက်ခြင်းပဲ ဖြစ်ပါတယ်။
Community နှင့် သင်ယူခြင်း
Dotfiles တွေရဲ့ ကောင်းမွန်တဲ့အချက်တစ်ခုကတော့ သူတို့ကို အများသူငှာ လွတ်လပ်စွာ မျှဝေလေ့ရှိခြင်းပဲ ဖြစ်ပါတယ်။ GitHub လို platform တွေမှာ “dotfiles” လို့ ရှာကြည့်ရင် တခြားသူတွေရဲ့ configuration တွေကို အများကြီး တွေ့ရမှာ ဖြစ်ပါတယ်။
Dotfiles Are Meant to Be Forked ဆိုတဲ့ စကားအတိုင်း၊ တခြားသူတွေရဲ့ dotfiles တွေကို ကြည့်ရှုလေ့လာခြင်း၊ သူတို့ရဲ့ repository တွေကို fork လုပ်ပြီး ကိုယ့်စိတ်ကြိုက် ပြန်လည်ပြင်ဆင်ခြင်းကနေ အသစ်အသစ်တွေ သင်ယူနိုင်ပါတယ်။ ကိုယ်မသိသေးတဲ့ tool တွေရဲ့ setting တွေ၊ အသုံးဝင်တဲ့ alias တွေ၊ shell script အလန်းစားတွေကို တခြားသူတွေဆီကနေ အိုင်ဒီယာယူနိုင်ပါတယ်။ ကိုယ့်ရဲ့ dotfiles တွေကိုလည်း public လုပ်ပြီး ပြန်လည် မျှဝေနိုင်ပါတယ်။
စတင်ခြင်း
Dotfiles တွေ စီမံခန့်ခွဲခြင်းကို စတင်ဖို့အတွက် အကောင်းဆုံးနည်းလမ်းကတော့ အနည်းငယ်သော အရေးကြီးတဲ့ ဖိုင်တွေ (ဥပမာ .bashrc
သို့မဟုတ် .zshrc
, .gitconfig
) နဲ့ စတင်ခြင်းပဲ ဖြစ်ပါတယ်။
- Git repository အသစ်တစ်ခု (ဥပမာ
~/dotfiles
) ကို စတင်ပါ။ - စတင် manage လုပ်လိုတဲ့ dotfiles တွေကို အဲဒီ repository folder ထဲကို ရွှေ့ပါ။
- မူရင်းနေရာကနေ repository ထဲက ဖိုင်တွေဆီကို symbolic link ပြန်ချိတ်ပါ။
- Git နဲ့ add, commit, push လုပ်ပြီး GitHub လိုမျိုး cloud မှာ သိမ်းထားပါ။
- တဖြည်းဖြည်းနဲ့ တခြား configuration ဖိုင်တွေကိုပါ ထည့်သွင်း manage လုပ်သွားပါ။
Dotfiles တွေကို စနစ်တကျ စီမံခန့်ခွဲခြင်းဟာ တစ်ကြိမ်တည်းလုပ်ပြီး အပြီးသတ်သွားတဲ့ အလုပ်မျိုး မဟုတ်ဘဲ၊ ကိုယ့်ရဲ့ လုပ်ငန်းလိုအပ်ချက်တွေ ပြောင်းလဲလာတာနဲ့အမျှ စဉ်ဆက်မပြတ် ပြင်ဆင် ထိန်းသိမ်းသွားရမယ့် လုပ်ငန်းစဉ်တစ်ခု ဖြစ်ပါတယ်။ ဒါပေမယ့် ဒီလိုရင်းနှီးမြှုပ်နှံလိုက်ခြင်းအားဖြင့် ရေရှည်မှာ ကိုယ့်ရဲ့ လုပ်ငန်းပတ်ဝန်းကျင်က ပိုမို စိတ်ကြိုက်ဖြစ်ပြီး ကုန်ထုတ်စွမ်းအား မြင့်မားလာမှာ အမှန်ပါပဲ။ တခြားသူတွေရဲ့ dotfiles တွေကို လေ့လာရင်း ကိုယ့်အတွက် အကောင်းဆုံးဖြစ်မယ့် ပုံစံကို ရှာဖွေတည်ဆောက်လိုက်ပါ။
Ref
- Getting started with dotfiles (L. Kappert)
- Getting started with dotfiles (D. Vints)
- Managing your dotfiles
- Dotfiles Are Meant to Be Forked
- Dotfile discovery
- I do Dotfiles!