ड्रॉपबॉक्स के साथ मशीनों पर साझा करने के लिए।


22

मैं बहुत सारी अलग-अलग मशीनों पर काम कर रहा हूं, सभी चल रहे उबंटू (हमेशा एक ही संस्करण नहीं)। मेरे पास अपने प्रॉम्प्ट के लिए कुछ वास्तव में बुनियादी अनुकूलन हैं जो मैं सभी मशीनों पर उपलब्ध होना चाहूंगा।

मैं वर्तमान में ड्रॉपबॉक्स का उपयोग करता हूं और अपनी सभी अन्य "डॉट फाइलें" वहां स्टोर करता हूं, जैसे कि मेरी .vim / .vimrcconconfig .ackrc। मैं तो बस उन्हें मेरे ड्रॉपबॉक्स फ़ोल्डर से अपने घर के फ़ोल्डर से जोड़ता हूं। Voilà, सिंक की सभी मशीनें।

मैं अनिश्चित हूं कि मेरे बैशकेज के साथ ऐसा कुछ करने का नतीजा क्या है। क्या कोई एक सुझाव दे सकता है? हो सकता है कि bashrc में एक अलग फ़ाइल लोड करने का एक आसान तरीका है?

जवाबों:


28

मुझे कोई वास्तविक नतीजे नहीं दिख रहे हैं, लेकिन मुझे लगता है कि यह इस बात पर निर्भर करता है कि आपके पास वहां क्या है! अगर यह सिर्फ त्वरित उपनाम है जो हर जगह समान है, और कॉस्मेटिक सामान हैं, तो मुझे कोई समस्या नहीं दिखती है।

आप या तो बस .bashrcअपने ड्रॉपबॉक्स फ़ोल्डर में किसी जगह पर जा सकते हैं और फिर इसे प्रत्येक मशीन पर सिमिलिंक कर सकते हैं।

  mkdir -p ~/Dropbox/dotfiles
  mv ~/.bashrc ~/Dropbox/dotfiles/.bashrc
  ln -s ~/Dropbox/dotfiles/.bashrc ~/.bashrc

मेरे पास वास्तव में मेरे होम फोल्डर में काफी कम डॉटफाइल्स हैं जो वास्तव में मेरे ड्रॉपबॉक्स खाते में साझा किए गए फ़ोल्डरों के लिए सहानुभूति रखते हैं।

एक अन्य विकल्प यह है कि आप अपने ड्रॉपबॉक्स फोल्डर के अंदर एक फाइल बना सकते हैं जिसे आपके द्वारा खट्टा किया जा सकता है .bashrc:

यानी, आपके .bashrc, में:

source $HOME/Dropbox/dotfiles/bashrc-shared-settings

और फिर एक bashrc- शेयर्ड-सेटिंग फ़ाइल बनाएँ, जो आपके द्वारा सभी मशीनों पर उपयोग की जाने वाली सामग्री है, और आप अभी भी अलग-अलग .bashrcफ़ाइलें रख सकते हैं ।

(आप sourceबस के रूप .में संक्षिप्त भी कर सकते हैं ।)


मेरे पास आपके उदाहरण के अनुसार मेरी अन्य डॉट फाइलें हैं, मैं सिर्फ बैश से परिचित नहीं हूं और यह अनिश्चित था कि उबंटू में सभी डिफ़ॉल्ट सामान "विशेष" कैसे हैं। मैं आपके द्वारा सुझाई गई स्रोत विधि का उपयोग करने जा रहा हूँ। धन्यवाद!
एलन पीबॉडी

8

मुख्य जोखिम जो मैं सोच सकता हूं, वह यह है कि आपको याद रखना चाहिए कि सिंक्रनाइज़ेशन बैक अप के समान नहीं है। कोई भी गलती आपकी सभी मशीनों के लिए सिंक हो जाएगी।

अपने ~/.bashrcऐड में एक अलग फाइल को शामिल करने के लिए कुछ इस तरह से करें:

if [ -f ~/.foo ]; then
    . ~/.foo
fi

जहां ~ / .foo अलग फाइल है।


1
आप सही हे! लेकिन सौभाग्य से, ड्रॉपबॉक्स आपकी फ़ाइलों के संशोधन रखता है, इसलिए सामान स्वचालित रूप से बैकअप होता है :)
एलेक्स

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

6

आमतौर पर, विन्यास फाइल को केंद्रीकृत करना एक अच्छी बात है! यदि आप किसी दिए गए OS या hostname के आधार पर रनिंग को कस्टमाइज़ करना चाहते हैं, तो आप अपने .bashrc में निम्नलिखित की तरह कुछ कर सकते हैं:

export HOSTNAME=`hostname | cut -f1 -d'.'`

if [ -f ~/.bash/os/$OSTYPE.sh ]; then
    source ~/.bash/os/$OSTYPE.sh
fi

if [ -f ~/.bash/host/$HOSTNAME.sh ]; then
    source ~/.bash/host/$HOSTNAME.sh
fi

फिर, एक .bash डाइरेक्टरी और os और होस्ट डाइरेक्टरीज़ को इसके अंतर्गत बनाएँ और <जो भी .sh कहलाने वाली फ़ाइलों में कोई भी कस्टम सेटिंग रखें जहाँ भी <जो भी हो> ओएस टाइप या वह होस्ट जिसे आप कस्टमाइज़ करना चाहते हैं।

मैं इन सभी फाइलों को ड्रॉपबॉक्स में रखता हूं, और मेरे पास मेरे ड्रॉपबॉक्स फ़ोल्डर में link_dropbox नामक एक बैश स्क्रिप्ट है जो मुझे उन्हें लिंक करने में सुविधा प्रदान करने में मदद करती है:

#!/bin/bash

#Array of <source><space><link> target->symlink mappings
linkarray=( "~/Dropbox/config/bashrc ~/.bashrc"
            "~/Dropbox/config/bash ~/.bash"
            "~/Dropbox/config/vimrc ~/.vimrc"
            "~/Dropbox/config/vim ~/.vim"
            "~/Dropbox/config/ssh ~/.ssh"
            "~/Dropbox/config/screenrc ~/.screenrc"
            "~/Dropbox/bin ~/bin" )

#turn off globbing to split each entry on spaces
set -f
for entry in "${linkarray[@]}"
do
    targets=( $entry )
    #eval will expand the tildes
    eval from=${targets[0]}
    eval to=${targets[1]}
        #if the target exists and is not a symlink, err on the side of caution
        if [ -e "$to" -a ! -L "$to" ]
        then
            echo "$to exists and is not a link, skipping..."
        else
            #probably safe to delete an existing symlink
            if [ -e "$to" ]
            then
                rm $to
            fi
            ln -s $from $to
        fi
done

2

मैं अपने .bashrc को कई अन्य कॉन्फिग फाइल्स (.gitconfig, .vimrc, आदि) के साथ ड्रॉपबॉक्स में सिम्प्लाइड रखता हूँ।

मैं अन्य सेटिंग्स के लिए इसके अंत में .bashrc_local नामक एक फ़ाइल को स्रोत करता हूं जिसे मैं मशीन को स्वतंत्र रखना चाहता हूं।

if [ -f ~/.bashrc_local ]; then
    . ~/.bashrc_local
fi

1

ड्रॉपबॉक्स के साथ सिंक करना बहुत अच्छा है, लेकिन अगर आप सर्वर पर ड्रॉपबॉक्स स्थापित नहीं करना चाहते हैं, तो आप मेरी विधि को लागू कर सकते हैं।

  1. अपने ड्रॉपबॉक्स फ़ोल्डर में अपनी साझा बैश सेटिंग्स के साथ एक फ़ाइल बनाएं।

  2. फ़ाइल पर राइट क्लिक करें और ड्रॉपबॉक्स मेनू से "शेयर लिंक" पर क्लिक करें।

  3. फिर "गेट लिंक" पर क्लिक करें। यह आपके क्लिपबोर्ड पर साझा लिंक को कॉपी करेगा।

  4. साझा फ़ाइल के अंत में dl = 1 जोड़ें। इससे आपको कच्ची फाइल मिल सकती है। आपका साझा लिंक अब मेरे जैसा दिखना चाहिए: https://dl.dropbox.com/s/h25q5c3czo6mnjo/saring_bash_settings.sh?dl=1

  5. इस लाइन को ~ / .bashrc में जोड़ें

    source $HOME/.bash_shared_settings

  6. इस आदेश का उपयोग करके अपने पसंदीदा अंतराल के साथ एक क्रोनजोब बनाएं (अपने ड्रॉपबॉक्स साझा फ़ाइल के साथ बदलें!)

    */30 * * * * curl -sS https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1 > ~/.bash_shared_settings; chmod +x ~/.bash_shared_settings;

इससे आपकी प्रति आधे घंटे में ~ / .bash_sared_settings की प्रति अपडेट हो जाएगी। हर बार जब आप अपना सत्र पुनः लोड करते हैं, तो आप नवीनतम परिवर्तन शामिल करेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.