From fd0d59a7dff8277c0eb7ef5f0b9158f632bc04ca Mon Sep 17 00:00:00 2001 From: laily Date: Sun, 10 May 2026 14:13:37 +0800 Subject: [PATCH] fix: set zsh as default shell when init it --- script/zsh-init.sh | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/script/zsh-init.sh b/script/zsh-init.sh index 4ed3992..25ba0ec 100755 --- a/script/zsh-init.sh +++ b/script/zsh-init.sh @@ -14,13 +14,26 @@ ln -sf "$ZSHRC_REPO" "$ZSHRC_HOME" echo " $ZSHRC_HOME -> $ZSHRC_REPO" if [[ ! -d "$HOME/.oh-my-zsh" ]]; then - echo "安装 Oh My Zsh(--unattended:不改默认 shell、不自动进 zsh;--keep-zshrc:保留已链接的 .zshrc)…" + echo "安装 Oh My Zsh(--unattended:安装脚本内不改 shell、不自动进 zsh;--keep-zshrc:保留已链接的 .zshrc)…" sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended --keep-zshrc else echo "Oh My Zsh 已存在,跳过安装 (~/.oh-my-zsh)" fi echo "" -echo "完成。当前仓库的 .zshrc 已启用 z 插件(Oh My Zsh plugins/z)。" -echo "未修改默认登录 shell;若需临时使用: zsh" -echo "本机额外配置可写入 ~/.zshrc.local(不会被链接覆盖)。" +echo "将默认登录 shell 设为 zsh" +zshpath="$(command -v zsh)" +if [[ -z "$zshpath" || ! -x "$zshpath" ]]; then + echo "错误: 找不到可执行的 zsh,请先安装 zsh。" >&2 + exit 1 +fi +if grep -qxF "$zshpath" /etc/shells 2>/dev/null; then + echo " $zshpath 已在 /etc/shells 中" +else + echo "$zshpath" | sudo tee -a /etc/shells +fi +chsh -s "$zshpath" + +echo "" +echo "完成。当前仓库的 .zshrc 已启用 z 插件(Oh My Zsh plugins/z),默认 shell 已改为: $zshpath" +echo "请重新登录或新开终端后生效。本机额外配置可写入 ~/.zshrc.local(不会被链接覆盖)。"