sudo を使用する Bash スクリプトは、ルートのホームディレクトリにファイルをインストールします。この問題をどのように解決できますか?

sudo を使用する Bash スクリプトは、ルートのホームディレクトリにファイルをインストールします。この問題をどのように解決できますか?

だから私は新しいシステムにドットファイルをインストールする最初のbashスクリプトを書いています。ドットファイルがいくつかあり、git clonesスクリプトが実行されるとデフォルトディレクトリのルートにインストールされるため、問題が発生します。礼拝規則sudo

ルートとして、基本的に3つのことを行う必要があります。

  1. インストールパッケージ
  2. 私が使用しているフォントのいくつかをgit clone移動します。/usr/share/fonts(〜/ .fontsに入れることはできますが、私のホームディレクトリに私が使用している1つのフォントに対して1つのフォルダしか置きたくありません。)
  3. .vimrcファイルをルートのホームディレクトリに移動します(ルートには特定の.vimrcがあります)。

上記の手順を手動で実行することもできますが、スクリプトを書いた理由はそうしないためです。

ルートホームディレクトリの他のすべてのエントリをインストールしたりgitを複製したりせずにこれを行うにはどうすればよいですか?

これはこれまで私のスクリプトです。

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

ベストアンサー1

おすすめ記事