sudo를 사용하는 Bash 스크립트는 루트의 홈 디렉터리에 파일을 설치합니다. 이 문제를 어떻게 해결할 수 있습니까?

sudo를 사용하는 Bash 스크립트는 루트의 홈 디렉터리에 파일을 설치합니다. 이 문제를 어떻게 해결할 수 있습니까?

그래서 저는 새로운 시스템에 도트 파일을 설치하는 첫 번째 bash 스크립트를 작성 중입니다. 도트 파일이 몇 개 있는데 git clones스크립트가 실행될 때 기본 디렉터리의 루트에 설치되기 때문에 문제가 발생합니다. 예배 규칙서sudo

루트로서 기본적으로 세 가지 작업을 수행해야 합니다.

  1. 설치 패키지
  2. 내가 사용하는 글꼴 중 일부를 git clone이동합니다 . /usr/share/fonts(~/.fonts에 넣을 수 있지만 홈 디렉토리에 내가 사용하는 글꼴 하나에 대해 단 하나의 폴더만 두고 싶지는 않습니다.)
  3. .vimrc 파일을 루트의 홈 디렉터리로 이동합니다(루트에 대한 특정 .vimrc가 있습니다).

위의 단계를 수동으로 수행할 수도 있지만 스크립트를 작성한 이유는 그렇게 하지 않기 위해서입니다.

루트 홈 디렉터리의 다른 모든 항목을 설치하거나 git 복제하지 않고 어떻게 이 작업을 수행할 수 있나요?

이것은 지금까지 내 스크립트입니다.

추신: 이것은 내 첫 번째 스크립트입니다. 그렇게 나쁘지 않기를 바랍니다.

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

관련 정보