Files
ProjectAGiPrompt/35-黑苹果DELL/3-WSL系统优化/3.2-wsl初始化脚本-实现内容.md
2026-06-24 17:20:42 +08:00

3.8 KiB
Raw Blame History

WSL2 Development Environment Setup

📁 Created Files

File Lines Description
wsl-dev-setup.sh 1541 一键配置脚本(单文件,模块化函数设计)

🏗️ Script Architecture

graph TD
    A["main()"] --> B["detect_system()"]
    B --> C{"Module Dispatcher"}
    C --> D["setup_proxy()"]
    C --> E["setup_apt_mirror()"]
    C --> F["setup_locale()"]
    C --> G["install_base_tools()"]
    C --> H["install_zsh_terminal()"]
    C --> I["install_nerd_fonts()"]
    C --> J["install_modern_cli()"]
    C --> K["install_golang()"]
    C --> L["install_nodejs()"]
    C --> M["print_summary()"]

    H --> H1["_generate_zshrc()"]
    H --> H2["_generate_p10k()"]

    J --> J1["bat · eza · fd · rg"]
    J --> J2["fzf · zoxide · delta · lazygit"]

    K --> K1["_setup_go_env()"]
    L --> L1["_setup_fnm_env()"]

📦 Module Details

1. Proxy (Clash Verge)

  • 设置 http_proxy, https_proxy, all_proxy 环境变量
  • 提供 proxy_on / proxy_off 快捷函数
  • 自动写入 .bashrc, .zshrc, .profile
  • 配置 Git 代理

2. APT Mirror

  • < 24.04: 传统 sources.list 格式
  • ≥ 24.04: DEB822 .sources 格式
  • 支持: 清华 TUNA / 中科大 USTC / 阿里云

3. Terminal: Zsh + Zinit + Powerlevel10k

  • Zinit Turbo 延迟加载:启动 < 100ms
  • Powerlevel10k Rainbow 风格Powerline 箭头分隔 + 彩色背景段
  • Instant Prompt: 终端瞬时响应
  • Transient Prompt: 历史命令显示简化
  • 插件: fast-syntax-highlighting, autosuggestions, completions, fzf-tab, history-substring-search, OMZ git/sudo/extract snippets

4. Go + Node.js

  • Go: 自动检测最新版,golang.google.cn 镜像下载,goproxy.cn 模块代理
  • Node.js: fnm (Rust 编写,比 nvm 快 40x)npm 镜像 npmmirror.com
  • 环境变量写入: /etc/profile.d/, .bashrc, .profile, .zshrc

5. Modern CLI Tools

Tool Replaces Source
bat cat apt (22.04+) / GitHub .deb
eza ls apt (24.04+) / GitHub tar
fd find apt / GitHub .deb
ripgrep grep apt / GitHub .deb
fzf apt / git clone
zoxide cd apt (24.04+) / GitHub .deb
delta diff GitHub .deb + git config
lazygit git TUI GitHub tar

🚀 Usage

Full Installation

sudo bash wsl-dev-setup.sh

Selective Modules

# Only install Go and Node.js
sudo bash wsl-dev-setup.sh --only golang,nodejs

# Skip fonts and modern CLI
sudo bash wsl-dev-setup.sh --skip fonts,modern-cli

# Use USTC mirror
sudo bash wsl-dev-setup.sh --mirror ustc

# Disable proxy
sudo bash wsl-dev-setup.sh --no-proxy

# Preview (dry run)
bash wsl-dev-setup.sh --dry-run

Custom Configuration

# Environment variables
sudo WINDOWS_HOST_IP=10.0.0.1 CLASH_PROXY_PORT=7891 bash wsl-dev-setup.sh
sudo GO_VERSION=1.23.0 bash wsl-dev-setup.sh
sudo NERD_FONT=FiraCode bash wsl-dev-setup.sh

Validation

  • Bash syntax check (bash -n): PASSED
  • 1541 lines, modular function design
  • Idempotent: safe to run multiple times
  • Error isolation: module failures don't block other modules
  • Supports: Ubuntu 20.04 / 22.04 / 24.04 / 26.04
  • Supports: amd64 / arm64 architectures

⚠️ Post-Install Notes

Important

Windows Terminal 字体设置: 安装完成后需在 Windows Terminal 中手动设置字体为 JetBrainsMono Nerd Font,否则终端图标会显示为方框。

Settings → Profiles → Defaults → Appearance → Font face

Tip

首次进入 Zsh 后,如对预设 Powerlevel10k 主题不满意,可运行 p10k configure 重新配置。