แสดงผลซ้ำเพื่อแบ่งปัน. bashrc ในเครื่องด้วย Dropbox หรือไม่


22

ฉันทำงานกับเครื่องที่แตกต่างกันมากทุกตัวที่ใช้ Ubuntu (ไม่ได้เป็นเวอร์ชั่นเดียวกันเสมอ) ฉันมีการปรับแต่งพื้นฐานบางอย่างให้กับพรอมต์ของฉันฉันต้องการให้มีในเครื่องทั้งหมด

ขณะนี้ฉันใช้ Dropbox และเก็บ "dot files" อื่น ๆ ทั้งหมดของฉันไว้ที่นั่นเช่น. vim / .vimrc .gitconfig .ackrc ฉันเพียงแค่เชื่อมโยงพวกเขาไปยังโฟลเดอร์บ้านของฉันจากโฟลเดอร์ Dropbox ของฉัน ตอนนี้เครื่องทั้งหมดที่อยู่ในการซิงค์

ฉันไม่แน่ใจว่าผลสะท้อนของการทำอะไรแบบนี้กับ bashrc ของฉันคืออะไร มีใครเสนอคำแนะนำได้ไหม อาจเป็นวิธีง่ายๆในการโหลดไฟล์แยกต่างหากใน bashrc?

คำตอบ:


28

ฉันไม่เห็นผลกระทบที่แท้จริงใด ๆ แต่ฉันคิดว่ามันขึ้นอยู่กับสิ่งที่คุณมีอยู่ในนั้น! ถ้ามันเป็นเพียงนามแฝงอย่างรวดเร็วที่ทำงานเหมือนกันทุกที่และของแต่งผมก็ไม่เห็นปัญหาใด ๆ

คุณสามารถย้าย.bashrcไปยังที่ใดที่หนึ่งในโฟลเดอร์ Dropbox ของคุณจากนั้นเชื่อมโยงไปยังแต่ละเครื่อง

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

จริง ๆ แล้วฉันมี dotfiles อยู่ในโฟลเดอร์บ้านของฉันซึ่งเป็น symlink ไปยังโฟลเดอร์ที่แชร์ในบัญชี Dropbox

อีกตัวเลือกหนึ่งคือคุณสามารถสร้างไฟล์ในโฟลเดอร์ดรอปบ็อกซ์ของคุณเพื่อให้ได้มาซึ่ง.bashrc:

เช่นคุณ.bashrcใส่:

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

จากนั้นสร้างไฟล์ bashrc-shared-settings ซึ่งเป็นสิ่งที่คุณต้องการใช้กับเครื่องทั้งหมดและคุณยังสามารถเก็บ.bashrcไฟล์แยกกันได้

(คุณสามารถย่อได้sourceเช่นเดียวกับการ.ทุบตี)


ฉันมีไฟล์จุดอื่น ๆ ของฉันตั้งค่าตามตัวอย่างของคุณฉันไม่คุ้นเคยกับการทุบตีและไม่แน่ใจว่า "พิเศษ" สิ่งที่เป็นค่าเริ่มต้นทั้งหมดที่อูบุนตูวางไว้ ฉันจะไปข้างหน้าและใช้วิธีการที่คุณแนะนำ ขอขอบคุณ!
Alan Peabody

8

ความเสี่ยงหลักที่ฉันคิดได้ก็คือคุณต้องจำไว้ว่าการซิงโครไนซ์นั้นไม่เหมือนกับการสำรองข้อมูล ความผิดพลาดใด ๆ จะถูกซิงค์กับเครื่องทั้งหมดของคุณ

หากต้องการรวมไฟล์แยกต่างหากใน~/.bashrcสิ่งที่คุณต้องการเพิ่ม:

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

โดยที่ ~ / .foo เป็นไฟล์แยกต่างหาก


1
คุณถูก! แต่โชคดีที่ดรอปบ็อกช่วยให้การแก้ไขไฟล์ของคุณดังนั้นสิ่งที่ได้รับการสนับสนุนโดยอัตโนมัติ :)
อเล็กซ์

ขอบคุณสำหรับคำแนะนำที่ดีฉันจะทำการจัดหาไฟล์ที่สองด้วยตนเองและฉันอาจจะใช้ไวยากรณ์นี้
Alan Peabody

6

โดยปกติแล้วการรวมศูนย์ไฟล์กำหนดค่าเป็นสิ่งที่ดี! หากคุณต้องการปรับแต่งสิ่งที่ทำงานตามระบบปฏิบัติการหรือชื่อโฮสต์ที่กำหนดคุณสามารถทำสิ่งต่อไปนี้ใน. 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และโฮสต์ภายใต้ไดเรกทอรีนั้นและตั้งค่าแบบกำหนดเองใด ๆ ในไฟล์ที่เรียกว่า<whething> .shโดยที่< whething >เป็นประเภทระบบปฏิบัติการหรือโฮสต์ที่คุณต้องการปรับแต่ง

ฉันเก็บไฟล์ทั้งหมดเหล่านี้ไว้ในดรอปบ็อกซ์และฉันมีสคริปต์ทุบตีชื่อ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 ของฉันไว้ที่ลิงก์ใน Dropbox พร้อมกับไฟล์กำหนดค่าอื่น ๆ อีกมากมาย (. gitconfig, .vimrc ฯลฯ )

ฉันมาไฟล์ที่เรียกว่า. bashrc_local ที่ส่วนท้ายของไฟล์สำหรับการตั้งค่าอื่น ๆ ซึ่งฉันอาจต้องการให้เครื่องเป็นอิสระ

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

1

การซิงค์กับ Dropbox นั้นยอดเยี่ยม แต่ถ้าคุณไม่ต้องการติดตั้ง Dropbox บนเซิร์ฟเวอร์คุณสามารถใช้วิธีการของฉันได้

  1. สร้างไฟล์ด้วยการตั้งค่า bash ที่แชร์ในโฟลเดอร์ Dropbox ของคุณ

  2. คลิกขวาที่ไฟล์และคลิกที่ "Share Link" จากเมนู Dropbox

  3. จากนั้นคลิก "รับลิงก์" นี่จะเป็นการคัดลอกลิงก์ที่แชร์ไปยังคลิปบอร์ดของคุณ

  4. เพิ่ม? dl = 1 ต่อท้ายไฟล์ที่แบ่งปัน สิ่งนี้ช่วยให้คุณรับไฟล์ raw ได้ ลิงก์ที่แชร์ของคุณควรมีลักษณะคล้ายกับของฉัน: https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1

  5. เพิ่มบรรทัดนี้ใน ~ / .bashrc

    source $HOME/.bash_shared_settings

  6. สร้าง cronjob ด้วยช่วงเวลาที่คุณต้องการโดยใช้คำสั่งนี้ (แทนที่ด้วย Dropbox Shared File ของคุณ!)

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

สิ่งนี้จะอัปเดตสำเนาของคุณของ ~ / .bash_shared_settings ทุกครึ่งชั่วโมง ทุกครั้งที่คุณโหลดเซสชันใหม่คุณจะรวมการเปลี่ยนแปลงล่าสุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.