2008-10-20 20 views
8

मैं एक बहुत सक्रिय कमांड लाइन उपयोगकर्ता हूं और मेरे पास पूरे स्थान पर खोल खाते हैं। मैकबुक, लिनक्स डेस्कटॉप मशीन, लिनक्स सर्वर, एक्सपी पर सिगविन, आप इसे नाम दें।एकाधिक मशीनों में सिंक में शेल कॉन्फ़िगरेशन रखना

मैं अपने सभी कॉन्फ़िगरेशन (.bashrc, .vimrc इत्यादि) को सभी प्लेटफॉर्म पर सीमित सीमित टूल का उपयोग करके इन सभी मशीनों में सिंक में कैसे रख सकता हूं?

मैं एक बहुत सीमित तरीके से मैन्युअल रूप से जब मैं उन्हें जरूरत है पर कुछ फ़ाइलों को कॉपी करना शामिल है में rsync उपयोग किया गया है, लेकिन मैं अपने सभी मशीनों भर में एक ही मूल खोल वातावरण स्थापित करने के लिए एक मानक तरीका चाहते हैं। मुझे अपनी खोल खाता प्रबंधन रणनीति बताएं।

उत्तर

12

मैं, वैश्विक साथ ड्रॉपबॉक्स पर फ़ोल्डर है ओएस प्रति, और प्रति मशीन खोल कॉन्फ़िगरेशन:

$ ls ~/Dropbox/shell/bash 
bashbootstrap bashrc 
bashrc-Darwin bashrc-Darwin-laptopname bashrc-Darwin-mininame 
bashrc-Linux bashrc-Linux-machineone bashrc-Linux-machinetwo 

bashrc, हर मशीन पर लोड किया जाता bashrc-Linux, bashrc-Darwin उनके संबंधित OSes पर लोड किए गए हैं, और कई कॉन्फ़िगरेशन विशिष्ट हैं व्यक्तिगत मशीनों के लिए। (वैसे, डार्विन ओएस एक्स के बीएसडी-जैसे कर्नेल का नाम है।)

bashbootstrap फ़ाइल सभी के साथ क्या संबंध है। यह विशिष्टता बढ़ाने के क्रम में प्रत्येक लागू कॉन्फ़िगरेशन फ़ाइल लोड करता है, यह प्रति ओएस और प्रति मशीन ओवरराइड को उच्च प्राथमिकता के लिए अनुमति देता है। इसके अतिरिक्त, हम चुपचाप गायब कॉन्फ़िगरेशन फ़ाइलों को छोड़ दें; स्क्रिप्ट को खुश रखने के लिए आपको अपनी प्रत्येक मशीन के लिए खाली कॉन्फ़िगरेशन फाइलें बनाने की आवश्यकता नहीं है। यहाँ

$ mv ~/.bashrc ~/.bashrc.bak 
$ ln -s ~/Dropbox/shell/bash/bashbootstrap ~/.bashrc 

ओह, और bashbootstrap फ़ाइल की सामग्री हैं:

एक नई मशीन पर, ~/Dropbox पर ड्रॉपबॉक्स स्थापित करने के बाद, मैं दूर डिफ़ॉल्ट .bashrc कदम और बस के बजाय उसके स्थान पर बूटस्ट्रैप फ़ाइल सिमलिंक :

if [ -z "$PS1" ]; then 
    return 
fi 

dropboxshelldir=~/Dropbox/shell 
dropboxdir=$dropboxshelldir/bash 
masterbashrc=$dropboxdir/bashrc 
osbashrc=$masterbashrc-`uname` 
localbashrc=$osbashrc-`hostname | cut -d. -f1` 

echo -n "Applicable shell configs: " 
for bashfile in "$masterbashrc" "$osbashrc" "$localbashrc"; do 
    if [ -r $bashfile ]; then 
    . $bashfile 
    echo -n "`basename $bashfile` " 
    fi 
done 
echo 

# Set convenience aliases 
myed=${VISUAL:-${EDITOR:-vim}} 
alias editbashrc="$myed $masterbashrc" 
alias editosbashrc="$myed $osbashrc" 
alias editlocalbashrc="$myed $localbashrc" 

एक अंतिम ध्यान दें, इस स्क्रिप्ट भी तीन सुविधा उपनाम जहां वे जमा हो जाती है याद करने के लिए बिना अपने बैश config फ़ाइलें संपादित करने के लिए प्रदान करता है।

  • editbashrc: संपादित करें वैश्विक कॉन्फ़िग फ़ाइल।
  • editosbashrc: ओएस-विशिष्ट कॉन्फ़िगरेशन फ़ाइल संपादित करें।
  • editlocalbashrc: मशीन-विशिष्ट कॉन्फ़िगरेशन फ़ाइल संपादित करें।

मैं केवल बैश पर इस परीक्षण किया है, लेकिन यह गोले की तरह अन्य बैश पर काम कर सके। लेकिन, जैसा कि वे कहते हैं, आपका लाभ भिन्न हो सकता है।

मैंने इस here के बारे में ब्लॉग पोस्ट किया है।

2

मैंने पिछले के लिए संस्करण नियंत्रण का उपयोग किया है (svn, mercurial, आदि ...)। आप अपना स्वयं का सर्वर सेट कर सकते हैं, या होस्ट किए गए एक का उपयोग कर सकते हैं। Dropbox भी काम करता है।

0

यदि आपके पास स्रोत नियंत्रण तक पहुंच है, तो मैं उन्हें केवल इन्हें जांचूंगा। इस तरह आप उन्हें कई मशीनों में सिंक कर सकते हैं और यदि आवश्यकता हो तो आप तुलना/रोल-बैक की तुलना कर सकते हैं। यदि आपके पास काम पर सीवीएस/एसवीएन नहीं है तो वहां मुफ्त विकल्प उपलब्ध हैं।