我使用很多不同的机器,所有机器都运行 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,您可以实现我的方法。
在您的 Dropbox 文件夹中创建一个包含共享 bash 设置的文件。
右键单击该文件,然后单击 Dropbox 菜单中的“共享链接”。
然后点击“获取链接”。这会将共享链接复制到你的剪贴板。
在共享文件的末尾添加 ?dl=1。这样您就可以获取原始文件。您的共享链接现在应该与我的类似:https://dl.dropbox.com/s/h25q5c3czo6mnjo/shared_bash_settings.sh?dl=1
将此行添加到 ~/.bashrc
source $HOME/.bash_shared_settings
使用此命令创建一个具有您喜欢的间隔的 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 副本。每次重新加载会话时,您都会包含最新的更改。