Private
Public Access
1
0

feat: 自动刷新环境变量并验证工具可用性

- 添加 get_shell_rc() 检测用户 shell 配置文件
- 添加 reload_env() 从配置文件加载环境变量
- 配置完成后自动刷新环境变量
- 验证每个工具是否可用并显示状态
- 如果工具不可用,提示用户执行 source 命令

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-12 13:47:58 +08:00
parent 8921665127
commit af49600718

View File

@@ -6,6 +6,7 @@ set -e
# 确保 PATH 包含常见的包管理器路径 # 确保 PATH 包含常见的包管理器路径
export PATH="$HOME/.bun/bin:$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:$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' RED='\033[0;31m'
@@ -21,6 +22,44 @@ success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; } warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${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========== # ========== 工具配置(兼容 bash 3.x==========
TOOL_NAMES_1="Claude Code" TOOL_NAMES_1="Claude Code"
TOOL_NAMES_2="Gemini CLI" TOOL_NAMES_2="Gemini CLI"
@@ -336,13 +375,39 @@ main() {
echo -e "${CYAN}========================================${NC}" echo -e "${CYAN}========================================${NC}"
echo "" echo ""
# 自动刷新环境变量
info "正在刷新环境变量..."
reload_env
if [[ $failed -eq 0 ]]; then if [[ $failed -eq 0 ]]; then
success "所有选中的工具配置成功!" success "所有选中的工具配置成功!"
echo "" echo ""
echo -e "${YELLOW}提示: 如果命令未找到,请执行以下操作之一:${NC}"
echo -e " 1. 重新打开终端" # 验证工具是否可用
echo -e " 2. 或执行: ${CYAN}source ~/.bashrc${NC}" local all_ok=true
echo -e " 3. 或执行: ${CYAN}export PATH=\"\$HOME/.bun/bin:\$PATH\"${NC}" 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 else
warning "$failed 个工具配置失败" warning "$failed 个工具配置失败"
fi fi