我在许多不同的机器上工作,所有机器都运行Ubuntu(并不总是同一版本)。我希望在所有机器上都可以使用一些非常基本的自定义设置。
我目前使用Dropbox并将所有其他“点文件”存储在其中,例如.vim / .vimrc .gitconfig .ackrc。然后,我只是将它们从我的Dropbox文件夹链接到我的主文件夹。Voilà,所有机器同步。
我不确定用我的bashrc做这样的事情的影响是什么。有人可以提供建议吗?也许是在bashrc中加载单独文件的简便方法?
我在许多不同的机器上工作,所有机器都运行Ubuntu(并不总是同一版本)。我希望在所有机器上都可以使用一些非常基本的自定义设置。
我目前使用Dropbox并将所有其他“点文件”存储在其中,例如.vim / .vimrc .gitconfig .ackrc。然后,我只是将它们从我的Dropbox文件夹链接到我的主文件夹。Voilà,所有机器同步。
我不确定用我的bashrc做这样的事情的影响是什么。有人可以提供建议吗?也许是在bashrc中加载单独文件的简便方法?
Answers:
我看不到任何真正的影响,但我想这取决于您在里面拥有什么!如果只是快速别名在任何地方都可以使用,以及修饰性的东西,我看不到任何问题。
您可以将其移动.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。)
通常,集中配置文件是一件好事!如果要自定义基于给定操作系统或主机名运行的内容,则可以在.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目录及其下的os和host目录,并将所有自定义设置放入名为<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
与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的副本。每次重新加载会话时,都会包含最新的更改。