2008-10-20 33 views
8

Tôi là một người dùng dòng lệnh khá hoạt động và tôi có tài khoản shell trên toàn bộ địa điểm. MacBook, máy tính để bàn Linux, máy chủ Linux, Cygwin trên XP, bạn đặt tên cho nó.Giữ cấu hình vỏ đồng bộ trên nhiều máy

Làm cách nào để giữ cấu hình vỏ của mình (.bashrc, .vimrc, v.v.) đồng bộ trên tất cả các máy này bằng các công cụ hạn chế có sẵn trên tất cả các nền tảng?

Tôi đã sử dụng rsync một cách khá hạn chế liên quan đến việc sao chép thủ công một số tệp khi cần, nhưng tôi muốn một cách tiêu chuẩn để thiết lập cùng môi trường vỏ cơ bản trên tất cả các máy của tôi. Cho tôi biết chiến lược quản lý tài khoản shell của bạn.

Trả lời

12

Tôi có thư mục trên Dropbox với toàn cầu, mỗi hệ điều hành, và mỗi configs vỏ máy:

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

bashrc được nạp trên mỗi máy, bashrc-Linux, bashrc-Darwin được nạp vào hệ điều hành của mình, và một số configs cụ thể cho từng máy. (Nhân tiện, Darwin là tên của hạt nhân giống như BSD của OS X.)

Mối quan hệ nào với nhau là tệp bashbootstrap. Nó tải mỗi tập tin cấu hình áp dụng theo thứ tự tăng tính đặc hiệu, điều này cho phép mỗi hệ điều hành và mỗi máy ghi đè để có ưu tiên cao hơn. Ngoài ra, chúng tôi âm thầm bỏ qua các tệp cấu hình bị thiếu; bạn không cần phải tạo các tệp cấu hình trống cho mỗi máy của bạn để giữ cho tập lệnh trở nên vui vẻ.

Trên một máy tính mới, sau khi cài đặt Dropbox trên ~/Dropbox, tôi di chuyển đi những mặc định .bashrc và chỉ liên kết mềm các tập tin bootstrap vào chỗ của nó thay vì:

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

Oh, và đây là những nội dung của file bashbootstrap :

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" 

Một lưu ý cuối cùng, tập lệnh này cũng cung cấp ba bí danh tiện lợi để chỉnh sửa tệp cấu hình Bash của bạn mà không phải nhớ vị trí chúng được lưu trữ.

  • editbashrc: Chỉnh sửa các tập tin cấu hình toàn cầu.
  • editosbashrc: Chỉnh sửa tệp cấu hình dành riêng cho hệ điều hành.
  • editlocalbashrc: Chỉnh sửa tệp cấu hình dành riêng cho máy.

Tôi chỉ thử nghiệm điều này trên Bash, nhưng nó có thể hoạt động trên các Bash khác như vỏ. Nhưng, như họ nói, số dặm của bạn có thể thay đổi.

Tôi đã đăng một bài đăng trên blog về số này here.

2

Tôi đã sử dụng điều khiển phiên bản cho quá trình này trong quá khứ (svn, mercurial, v.v ...). Bạn có thể thiết lập máy chủ của riêng bạn hoặc sử dụng máy chủ lưu trữ. Dropbox cũng hoạt động.

0

Nếu bạn có quyền truy cập vào kiểm soát nguồn, tôi chỉ cần kiểm tra chúng. Bằng cách này, bạn sẽ đồng bộ hóa chúng trên nhiều máy và bạn có thể so sánh/quay lại nếu cần. Nếu bạn không có CVS/SVN tại nơi làm việc thì có sẵn các tùy chọn miễn phí.

Các vấn đề liên quan