.dotファイル(.dotディレクトリではない)をディレクトリにコピーしたいと思います。これを行うには、オペレーティングシステム(MacOS)でユーザーパスワードを入力する必要があります。私はこれを行う関数を作成し、それを次のような大きなバックアップスクリプトに統合したいと思います。
#!/bin/zsh
source ~/.zshrc
set -o errexit
set -o nounset
set -o pipefail
copy_dotfiles()
{
MAIN_PATH="/Users/user01/"
DOTFILE_DIR="${MAIN_PATH}Documents/dot_files"
echo $DOTFILE_DIR
mkdir $DOTFILE_DIR
for f in $MAIN_PATH.[!.]*; do
if [[ -f $f ]]; then
echo "$f" is a file
DOTFILE=`echo $f | sed 's/\/Users\/user01\///g'`
echo "$DOTFILE" is a file
cp $f ${DOTFILE_DIR}/${DOTFILE} || exit 1
elif [[ -d $f ]]; then
echo "$f" is a dir
continue
else
echo "$f is not valid"
exit 1
fi
done
}
sudo copy_dotfiles || exit 1
ただし、スクリプトを実行すると、次の結果が表示されます。
sudo: copy_dotfiles: command not found
ベストアンサー1
sudo
シェル関数ではありません。実行可能ファイルを実行する別の実行可能ファイルです。 :)
したがって、シェル機能を実行できません。それでもシェルスクリプトを実行できます!したがって、動作させるには、sudo
このスクリプトからこれを省略し、sudoを介してスクリプト全体を実行します。
あなた本当にsource ~/.zshrc
とにかく削除する必要がありますが、特にスクリプトをrootとして実行するとき。