From af496007180f3d17e08f88212d32ef4d569050db Mon Sep 17 00:00:00 2001 From: sususu98 Date: Fri, 12 Dec 2025 13:47:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=87=AA=E5=8A=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E5=B9=B6=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=8F=AF=E7=94=A8=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 get_shell_rc() 检测用户 shell 配置文件 - 添加 reload_env() 从配置文件加载环境变量 - 配置完成后自动刷新环境变量 - 验证每个工具是否可用并显示状态 - 如果工具不可用,提示用户执行 source 命令 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- setup.sh | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/setup.sh b/setup.sh index 48c1b2f..19539b1 100755 --- a/setup.sh +++ b/setup.sh @@ -6,6 +6,7 @@ set -e # 确保 PATH 包含常见的包管理器路径 export PATH="$HOME/.bun/bin:$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:$PATH" +export BUN_INSTALL="$HOME/.bun" # ========== 颜色定义 ========== RED='\033[0;31m' @@ -21,6 +22,44 @@ success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; } warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; } error() { echo -e "${RED}[ERROR]${NC} $1"; } +# ========== 检测 shell 配置文件 ========== +get_shell_rc() { + if [ -n "${ZSH_VERSION:-}" ] || [ "${SHELL##*/}" = "zsh" ]; then + echo "$HOME/.zshrc" + elif [ -n "${BASH_VERSION:-}" ] || [ "${SHELL##*/}" = "bash" ]; then + if [ -f "$HOME/.bashrc" ]; then + echo "$HOME/.bashrc" + else + echo "$HOME/.bash_profile" + fi + else + echo "$HOME/.profile" + fi +} + +# ========== 刷新环境变量 ========== +reload_env() { + local rc_file + rc_file=$(get_shell_rc) + + # 重新加载 PATH + export PATH="$HOME/.bun/bin:$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:$PATH" + export BUN_INSTALL="$HOME/.bun" + + # 从配置文件中提取并加载环境变量 + if [ -f "$rc_file" ]; then + # 提取 export 行并执行 + while IFS= read -r line; do + if [[ "$line" =~ ^export\ ([A-Za-z_][A-Za-z0-9_]*)= ]]; then + eval "$line" 2>/dev/null || true + fi + done < "$rc_file" + fi + + # 刷新命令缓存 + hash -r 2>/dev/null || true +} + # ========== 工具配置(兼容 bash 3.x)========== TOOL_NAMES_1="Claude Code" TOOL_NAMES_2="Gemini CLI" @@ -336,13 +375,39 @@ main() { echo -e "${CYAN}========================================${NC}" echo "" + # 自动刷新环境变量 + info "正在刷新环境变量..." + reload_env + if [[ $failed -eq 0 ]]; then success "所有选中的工具配置成功!" echo "" - echo -e "${YELLOW}提示: 如果命令未找到,请执行以下操作之一:${NC}" - echo -e " 1. 重新打开终端" - echo -e " 2. 或执行: ${CYAN}source ~/.bashrc${NC}" - echo -e " 3. 或执行: ${CYAN}export PATH=\"\$HOME/.bun/bin:\$PATH\"${NC}" + + # 验证工具是否可用 + local all_ok=true + for i in $tools_to_configure; do + local tool_cmd=$(get_tool_cmd "$i") + local tool_name=$(get_tool_name "$i") + if command_exists "$tool_cmd"; then + echo -e " ${GREEN}✓${NC} $tool_name ($tool_cmd) 可用" + else + echo -e " ${RED}✗${NC} $tool_name ($tool_cmd) 未找到" + all_ok=false + fi + done + + echo "" + if [[ "$all_ok" == "false" ]]; then + warning "部分工具在当前会话中不可用" + echo -e "${YELLOW}请执行以下命令刷新环境:${NC}" + echo "" + local rc_file=$(get_shell_rc) + echo -e " ${CYAN}source $rc_file${NC}" + echo "" + echo -e "或者重新打开终端" + else + success "所有工具已就绪,可以直接使用!" + fi else warning "有 $failed 个工具配置失败" fi