fix: 正确的在 Darwin 上替换 zrc source 的实现
This commit is contained in:
parent
cecf62aadb
commit
83ba97dd18
30
init_priv.sh
30
init_priv.sh
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user