From f8635b0969fce97705803106e73ffa84004f701f Mon Sep 17 00:00:00 2001 From: laily Date: Sun, 10 May 2026 13:55:06 +0800 Subject: [PATCH] feat: add zsh --- .gitignore | 1 + script/zsh-init.sh | 26 ++++++++++++++++++++++++++ zsh/.zshrc | 18 ++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100755 script/zsh-init.sh create mode 100644 zsh/.zshrc diff --git a/.gitignore b/.gitignore index 8340f44..aeabbd3 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ cn.sh __pycache__ Makefile .claude/ +script/clash.sh diff --git a/script/zsh-init.sh b/script/zsh-init.sh new file mode 100755 index 0000000..4ed3992 --- /dev/null +++ b/script/zsh-init.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -euo pipefail + +DOTFILE="${DOTFILE:-$HOME/.dotfile}" +ZSHRC_REPO="$DOTFILE/zsh/.zshrc" +ZSHRC_HOME="$HOME/.zshrc" + +echo "Link zshrc" +if [[ -f "$ZSHRC_HOME" && ! -L "$ZSHRC_HOME" ]]; then + mv "$ZSHRC_HOME" "$ZSHRC_HOME.bak" + echo " 已备份原文件 -> $ZSHRC_HOME.bak" +fi +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)…" + 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(不会被链接覆盖)。" diff --git a/zsh/.zshrc b/zsh/.zshrc new file mode 100644 index 0000000..e4da1b1 --- /dev/null +++ b/zsh/.zshrc @@ -0,0 +1,18 @@ +# Oh My Zsh(由 ~/.dotfile/script/zsh-init.sh 安装到 ~/.oh-my-zsh) +export ZSH="$HOME/.oh-my-zsh" +ZSH_THEME="robbyrussell" + +# z:目录跳转频率学习(OMZ 自带 plugins/z) +plugins=( + git + z +) + +if [[ -d "$ZSH" ]]; then + source "$ZSH/oh-my-zsh.sh" +else + echo "[zsh] Oh My Zsh 未安装,请运行: bash ~/.dotfile/script/zsh-init.sh" >&2 +fi + +# 本机私有配置(不纳入 dotfile) +[[ -f "$HOME/.zshrc.local" ]] && source "$HOME/.zshrc.local"