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:
73
setup.sh
73
setup.sh
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user