所以,我正在编写我的第一个 bash 脚本,它是在新系统上安装我的点文件,有一些点文件,git clones
这把事情搞乱了,因为当脚本执行时,它会将它们安装在根目录的主目录中sudo
作为 root,我基本上需要做三件事:
- 安装包
- 将我使用 , 获得的一些字体移动
git clone
到/usr/share/fonts
(我可以将它们放在 ~/.fonts 中,但我不希望我的主目录中只有一个文件夹用于存放我使用的一种字体) - 将 .vimrc 文件移至 root 的主目录(我有一个针对 root 的特定 .vimrc)
我可以手动执行上述步骤,但我编写脚本的原因是为了避免这样做。
如何在不安装或 git 克隆 root 主目录中其他所有内容的情况下执行此操作?
这是我到目前为止的脚本。
PS:这是我的第一个剧本,希望它看起来不会那么糟糕。
#!/bin/bash
if [ ! -d "$HOME/.dotfiles" ]; then
echo "============================"
echo "== Installing dotfiles... =="
echo "============================"
git clone --separate-git-dir="$HOME"/.dotfiles https://github.com/username/dotfiles.git my-dotfiles-tmp >/dev/null 2>&1;
rsync --recursive --verbose --exclude '.git' my-dotfiles-tmp/ "$HOME"/ >/dev/null 2>&1;
rm --recursive my-dotfiles-tmp >/dev/null 2>&1;
else
echo "Can't make install, '$HOME/.dotfiles' folder already exist"
exit
fi
if [ -f "$HOME/.zshrc" ]; then
mv .zshrc .zshrc.bak
fi
# create necessary directories
mkdir -p $HOME/.config/zsh/plugins/{colored-man-pages,syntax-highlighting,zsh-autosuggestions}
# git clone necessary zsh extensions
git clone https://github.com/ael-code/zsh-colored-man-pages.git ~/.config/zsh/plugins/colored-man-pages >/dev/null 2>&1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.config/zsh/plugins/syntax-highlighting >/dev/null 2>&1
git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.config/zsh/plugins/zsh-autosuggestions >/dev/null 2>&1
# neovim set up
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' >/dev/null 2>&1
function config {
/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME $@
}
config config status.showUntrackedFiles no
# clear terminal
clear
echo "=========="
echo "== Done =="
echo "=========="
# reload zsh
zsh >/dev/null 2>&1