Tác động để chia sẻ .bashrc trên các máy với Dropbox?


22

Tôi làm việc trên rất nhiều máy khác nhau, tất cả đều chạy Ubuntu (không phải lúc nào cũng là cùng một phiên bản). Tôi có một số tùy chỉnh thực sự cơ bản theo lời nhắc của mình, tôi muốn có sẵn trên tất cả các máy.

Tôi hiện đang sử dụng Dropbox và lưu trữ tất cả các "tệp chấm" khác của mình ở đó, chẳng hạn như .vim / .vimrc .gitconfig .ackrc. Sau đó tôi chỉ cần liên kết chúng với thư mục nhà của tôi từ thư mục Dropbox của tôi. Voilà, tất cả các máy đồng bộ.

Tôi không chắc những hậu quả của việc làm một cái gì đó như thế này với bashrc của tôi là gì. Có ai có thể đưa ra đề nghị? Có lẽ một cách dễ dàng để tải một tệp riêng trong bashrc?

Câu trả lời:


28

Tôi không thấy bất kỳ hậu quả thực sự nào, nhưng tôi cho rằng nó phụ thuộc vào những gì bạn có trong đó! Nếu đó chỉ là bí danh nhanh chóng hoạt động giống nhau ở mọi nơi và mỹ phẩm, tôi không thấy bất kỳ vấn đề nào.

Bạn có thể chỉ cần di chuyển .bashrcđến một nơi nào đó trong thư mục Dropbox của bạn và sau đó liên kết nó trên mỗi máy.

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

Tôi thực sự có khá nhiều dotfiles trong thư mục nhà của mình, đây thực sự là các liên kết tượng trưng đến các thư mục được chia sẻ trong tài khoản Dropbox của tôi.

Một tùy chọn khác là bạn có thể tạo một tệp trong thư mục dropbox của mình để được cung cấp bởi .bashrc:

Tức là, trong của bạn .bashrc, đặt:

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

và sau đó tạo tệp bashrc-shared-settings, đây là thứ bạn muốn sử dụng trên tất cả các máy và bạn vẫn có thể giữ .bashrccác tệp riêng biệt .

(Bạn cũng có thể viết tắt sourcenhư chỉ .trong bash.)


Tôi có các tệp chấm khác của tôi được thiết lập theo ví dụ của bạn, tôi chỉ không quen thuộc với bash và không chắc chắn "đặc biệt" tất cả những thứ mặc định mà Ubuntu đặt trong đó là gì. Tôi sẽ tiếp tục và sử dụng phương pháp nguồn mà bạn đề xuất. Cảm ơn bạn!
Alan Peabody

8

Rủi ro chính mà tôi có thể nghĩ đến là bạn phải nhớ rằng đồng bộ hóa không giống như sao lưu. Bất kỳ sai lầm sẽ được đồng bộ hóa với tất cả các máy của bạn.

Để bao gồm một tệp riêng biệt trong bạn ~/.bashrcthêm một cái gì đó như vậy:

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

Trong đó ~ / .foo là tệp riêng biệt.


1
Bạn đúng! Nhưng may mắn thay, dropbox giữ bản sửa đổi các tệp của bạn, vì vậy mọi thứ sẽ được sao lưu tự động :)
Alex

Cảm ơn lời đề nghị tuyệt vời, tôi sẽ tự tìm nguồn cung cấp một tệp thứ hai và tôi có thể sẽ sử dụng cú pháp này.
Alan Peabody

6

Thông thường, tập trung các tập tin cấu hình là một điều tốt! Nếu bạn muốn tùy chỉnh những gì chạy dựa trên một hệ điều hành hoặc tên máy chủ nhất định, bạn có thể thực hiện một số thứ như sau trong .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

Sau đó, tạo thư mục .bash và thư mục osmáy chủ lưu trữ bên dưới và đặt bất kỳ cài đặt tùy chỉnh nào trong các tệp có tên <anything> .sh trong đó < anything > là loại os hoặc máy chủ bạn muốn tùy chỉnh.

Tôi giữ tất cả các tệp này trong dropbox và tôi có một tập lệnh bash có tên link_dropbox trong thư mục Dropbox giúp tôi tạo điều kiện liên kết chúng trong:

#!/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

Tôi giữ liên kết .bashrc của mình trong Dropbox cùng với rất nhiều tệp cấu hình khác (.gitconfig, .vimrc, v.v.).

Tôi lấy một tệp có tên .bashrc_local ở cuối tệp cho các cài đặt khác mà tôi có thể muốn giữ máy độc lập.

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

1

Đồng bộ hóa với Dropbox là điều tuyệt vời, nhưng nếu bạn không muốn cài đặt Dropbox trên máy chủ, bạn có thể thực hiện phương pháp của tôi.

  1. Tạo một tệp với các cài đặt bash được chia sẻ trong thư mục Dropbox của bạn.

  2. Nhấp chuột phải vào tệp và nhấp vào "Chia sẻ liên kết" từ menu Dropbox.

  3. Sau đó nhấp vào "Nhận liên kết." Điều này sẽ sao chép liên kết được chia sẻ vào clipboard của bạn.

  4. Thêm? Dl = 1 vào cuối tệp được chia sẻ. Điều này cho phép bạn có được các tập tin thô. Liên kết được chia sẻ của bạn bây giờ trông tương tự như của tôi: https://dl.dropbox.com/s/h25q5c3czo6mnjo/ Shared_bash_sinstall.sh? Dl = 1

  5. Thêm dòng này vào ~ / .bashrc

    source $HOME/.bash_shared_settings

  6. Tạo một cronjob với khoảng thời gian ưa thích của bạn bằng lệnh này (Thay thế bằng Tệp được chia sẻ Dropbox của bạn!)

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

Điều này sẽ cập nhật bản sao của bạn ~ / .bash_ Shared_sinstall mỗi nửa giờ. Mỗi lần bạn tải lại phiên của mình, bạn sẽ bao gồm những thay đổi mới nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.