使用 Dropbox 在机器之间共享 .bashrc 会产生什么影响?

使用 Dropbox 在机器之间共享 .bashrc 会产生什么影响?

我使用很多不同的机器,所有机器都运行 Ubuntu(并非总是同一版本)。我对我的提示符进行了一些非常基本的自定义,希望这些自定义在所有机器上都可用。

我目前使用 Dropbox,并将我所有其他“点文件”存储在那里,例如我的 .vim/ .vimrc .gitconfig .ackrc。然后我只需将它们从我的 Dropbox 文件夹链接到我的主文件夹即可。瞧,所有机器都同步了。

我不确定对我的 bashrc 执行此类操作会有什么后果。有人可以提供建议吗?也许有一种在 bashrc 中加载单独文件的简单方法?

答案1

我没有看到任何实际影响,但我想这取决于你在那里面有什么!如果它只是在任何地方都起作用的快速别名和装饰性的东西,我认为没有任何问题。

您可以将其移动.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文件。

(您也可以在 bash 中缩写source为 just 。).

答案2

我能想到的主要风险是,你必须记住同步不同于备份。任何错误都会同步到你所有的机器上。

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

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

其中 ~/.foo 是单独的文件。

答案3

通常,集中配置文件是一件好事!如果您想根据给定的操作系统或主机名自定义运行的内容,您可以在 .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目录和操作系统主持人目录并将任何自定义设置放入名为<随便>.sh在哪里<随便>是您想要定制的操作系统类型或主机。

我将所有这些文件都保存在 Dropbox 中,并且我有一个名为link_dropbox在我的 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

答案4

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

相关内容