使用Dropbox在计算机之间共享.bashrc会产生影响吗?


22

我在许多不同的机器上工作,所有机器都运行Ubuntu(并不总是同一版本)。我希望在所有机器上都可以使用一些非常基本的自定义设置。

我目前使用Dropbox并将所有其他“点文件”存储在其中,例如.vim / .vimrc .gitconfig .ackrc。然后,我只是将它们从我的Dropbox文件夹链接到我的主文件夹。Voilà,所有机器同步。

我不确定用我的bashrc做这样的事情的影响是什么。有人可以提供建议吗?也许是在bashrc中加载​​单独文件的简便方法?

Answers:


28

我看不到任何真正的影响,但我想这取决于您在里面拥有什么!如果只是快速别名在任何地方都可以使用,以及修饰性的东西,我看不到任何问题。

您可以将其移动.bashrc到Dropbox文件夹中的某个位置,然后在每台计算机上进行符号链接。

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

实际上,我的主文件夹中有很多点文件,这些文件实际上是我Dropbox帐户中共享文件夹的符号链接。

另一个选择是,您可以在Dropbox文件夹中创建一个文件,以供您的来源.bashrc

即在您的中.bashrc,输入:

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

然后创建一个bashrc-shared-settings文件,这是您要在所有计算机上使用的文件,并且您仍然可以将其分开 .bashrc文件文件。

(您也可以将其缩写source.bash。)


我确实按照您的示例设置了其他点文件,但我对bash不太熟悉,并且不确定Ubuntu放在其中的所有默认内容有多“特殊”。我将继续使用您建议的源方法。谢谢!
艾伦·皮博迪

8

我能想到的主要风险是,您必须记住同步与备份并不相同。任何错误都将同步到您的所有计算机。

要在您的~/.bashrc添加文件中包含一个单独的文件,如下所示:

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

〜/ .foo是单独的文件。


1
你是对的!但幸运的是,Dropbox会保留文件的修订版,因此会自动备份内容:)
Alex

感谢您的出色建议,我将手动采购第二个文件,并且我可能会使用此语法。
艾伦·皮博迪

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目录及其下的oshost目录,并将所有自定义设置放入名为<whatever> .sh的文件中,其中<whatever>是os类型或要自定义的主机。

我将所有这些文件保留在dropbox中,并且在Dropbox文件夹中有一个名为link_dropbox的bash脚本,可帮助我方便地在以下位置链接它们:

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

与Dropbox同步非常好,但是如果您不想在服务器上安装Dropbox,则可以实现我的方法。

  1. 在您的Dropbox文件夹中使用共享的bash设置创建一个文件。

  2. 右键单击该文件,然后从Dropbox菜单中单击“共享链接”。

  3. 然后点击“获取链接”。这会将共享链接复制到剪贴板。

  4. 将?dl = 1添加到共享文件的末尾。这样就可以获取原始文件。您的共享链接现在应该看起来与我的相似:https : //dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1

  5. 将此行添加到〜/ .bashrc

    source $HOME/.bash_shared_settings

  6. 使用此命令以您喜欢的间隔创建一个cronjob(用Dropbox共享文件替换!)

    */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的副本。每次重新加载会话时,都会包含最新的更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.