fix: 正确的在 Darwin 上替换 zrc source 的实现

This commit is contained in:
Konano 2024-07-04 22:49:42 +08:00
parent cecf62aadb
commit 83ba97dd18

View File

@ -127,21 +127,6 @@ configure_vim() {
fi
}
replace_zsh_source() {
local zshrc="$HOME/.zshrc"
local old_source="\$ZSH/oh-my-zsh.sh"
local new_source="~/.oh-my-zsh/custom/00-init.zsh"
# 使用 sed 进行替换,注意 macOS 和 Linux 的 sed 语法稍有不同
if [ "$(uname)" = "Darwin" ]; then
# macOS 使用的是 BSD sed需要给 -i 选项传递一个空字符串作为扩展名
sed -i '' "s|${old_source}|${new_source}|g" "$zshrc"
else
# Linux 使用的是 GNU sed
sed -i "s|${old_source}|${new_source}|g" "$zshrc"
fi
}
configure_zsh() {
[ -f ~/.zshrc ] && return
@ -158,7 +143,20 @@ configure_zsh() {
pkg_install autojump
if ! grep -Fxq "source ~/.oh-my-zsh/custom/00-init.zsh" ~/.zshrc; then
replace_zsh_source
local zshrc="$HOME/.zshrc"
local search_line="source \$ZSH/oh-my-zsh.sh"
local add_line="source ~/.oh-my-zsh/custom/00-init.zsh"
if [ "$(uname)" = "Darwin" ]; then
# macOS
awk -v search="$search_line" -v add="$add_line" '{
if (index($0, search) > 0) print add
print $0
}' "$zshrc" > ~/.zshrc.temp && mv ~/.zshrc.temp "$zshrc"
else
# Linux
sed -i "/${search_line}/i ${add_line}" "$zshrc"
fi
fi
cp $scriptdir/files/zsh/.zsh_user ~/.zsh_user