环境变量配置


WSL

安装

wsl --install

这会默认安装 Ubuntu,可以参照官网介绍(https://learn.microsoft.com/zh-cn/windows/wsl/install#change-the-default-linux-distribution-installed)安装其他发行版

安装完成后重启电脑,在开始菜单中打开 Ubuntu,打开后根据提示输入用户名和密码创建默认管理员用户。

第一次进入窗口可能会提示如下信息(如果没遇到这个信息可以跳过这一步):

The WSL optional component is not enabled. Please enable it and try again.
See https://aka.ms/wslinstall for details.
Error: 0x8007007e
Press any key to continue...

打开控制面板 ===> 程序 ===> 启用或关闭windows 功能,

系统为64位的 需要勾选 适用于 Linuxwindows 子系统 、Hyper-v
系统为32位的 需要勾选 适用于 Linuxwindows 子系统 、虚拟机平台

完成上面设置之后重启电脑即可

升级命令包

WSL 默认的软件源列表(/etc/apt/sources.list)可能未更新,导致无法找到最新版本的软件包。

许多工具(如 mininetwireshark)位于 UbuntuUniverseMultiverse 仓库中,但 WSL 默认可能未启用这些仓库。启用 Universe/Multiverse 仓库:

sudo apt update && sudo apt upgrade
sudo add-apt-repository universe
sudo add-apt-repository multiverse

配置命令行 zsh

理想当中的命令行:

  1. 好看(配色、字体可以自由设定);
  2. 支持 UTF-8 字符的输入与显示;
  3. 支持常见的 *NIX 命令行工具(cat、grep、awk 等);
  4. 自动补全、语法高亮、历史记录;
  5. 完善的复制粘贴支持;
  6. 互操作性(共享文件系统、网络栈,可调用 Win32 程序);
  7. 支持常用的脚本语言(PHP、Python、Node.js 等);
  8. 包管理器,以及其他各种常用软件的支持;
  9. 快速呼出(快捷键、右键菜单入口)。

安装 zsh:

sudo apt install zsh

设置 zsh 为默认命令行:

chsh -s $(which zsh)

运行后需要输入密码,之后重启终端即可看到设置生效了,也可以通过 echo $SHELL 命令查看当前命令行是否是 /bin/zsh

zsh 配置 Proxy(不在国内可以跳过)

注意:它仅仅只用来配置 zsh,安装了 oh-my-zsh 后就会失效,因为 ~/.zshrc 会被覆盖。

如果遇到:「wsl: 检测到 localhost 代理配置,但未镜像到 WSL。
NAT 模式下的 WSL 不支持 localhost 代理。」,
可以在 C:\Users\[username] 目录下创建 .wslconfig 文件,写入:

[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

然后在 PowerShell 中用 wsl --shutdown 命令关闭 WSL,再重启终端。

WSL2 的网络是连接自 Windows 的一个单独网络,所以无法直接使用到 Windows 中开启的代理,但是可以通过设置代理为 Windows IP + 代理端口号实现

首先在代理软件中开启「允许来至局域网的连接」

「本机 sockets 端口」对应的端口号也就是 Windows 代理的端口号,而一般我们在 Clash 中使用的 http 端口号,则为 sockets 端口 + 1。

假设我们用到的是 9090.

Windows IP 地址是可能变化的,可以利用上面提到的 WSL 网络连接自 Windows 这一点,从 /etc/resolv.conf 文件中自动获取

之后通过 code ~/.zshrcvim ~/.zshrc 在 zsh 配置中添加:

host_ip=$(cat /etc/resolv.conf | grep "nameserver" | cut -f 2 -d " ")
proxy_port=10809
alias proxy="all_proxy=http://$host_ip:$proxy_port"

运行

source ~/.zshrc

让配置生效,之后运行:

curl www.google.com # 失败
proxy curl www.google.com # 成功

你可以看到,当我们在 curl 请求命令前增加 proxy,这就意味着我们使用了 windows 代理进行了访问。随后的 oh-my-zsh 的安装就说明了这一点。

如果还是无法正常使用代理,可能是因为防火墙的原因,可以在 Windows 命令行中以管理员身份执行:

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

防火墙设置如果遇到:「New-NetFirewallRule : The specified interface was not found on the system.」,需要将命令中的 vEthernet (WSL) 替换为「Windows Defender 防火墙属性 -> 公用配置文件 -> 受保护的网络连接-自定义」中实际的 vEthernet-WSL 名称

配置 oh-my-zsh

运行命令安装 oh-my-zsh

proxy curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

随后安装:

  • zsh-syntax-highlighting:提供语法高亮功能
  • zsh-autosuggestions:根据历史命令提供建议

运行:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

随后在 ~/.zshrc 中,修改主题和插件:

plugins=(
        git
        sudo
        z
        zsh-autosuggestions
        zsh-syntax-highlighting)
ZSH_THEME="agnoster"

配置 Git

注意,以下两种方法,二选一即可。

通过共享 Windows 的信息

通过在 Windows 命令提示符或 PowerShell 中运行以下命令,在 Windows 上配置凭据管理器:

git config --global credential.helper wincred

配置 WSL 以使用相同的凭据帮助程序,在 WSL 终端中运行以下命令(假设您有git>= v2.39.0):

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"

(exe 路径可能需要修改)

要了解以前版本的路径 git,请参考 https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-git

通过设置 SSH

将 Git 更新至适合 WSL 的最新稳定版本。

sudo apt-get install git

设置用户名 (Github ID)

git config --global user.name "your_name"

设置邮箱 (Github email)

git config --global user.email "your_email"

在 WSL 下生成 SSH 公钥—私钥对(将邮箱替换为你的邮箱),此时生成的 SSH 密钥默认位于 ~/.ssh 路径下,公钥为 id_rsa.pub,私钥为 id_rsa

执行完后只需一路回车即可

ssh-keygen -t rsa -b 4096 -C "your_email"

打开 ssh-agent 使之在后台运行

eval "$(ssh-agent -s)"

将私钥添加到 ssh-agent 之中

ssh-add ~/.ssh/id_rsa

查看并复制公钥

cat ~/.ssh/id_rsa.pub

将复制的公钥信息添加到 Github/Gitee

Clion 初始化

C++ 一般是用在 linux 下,这里就用 Ubuntu 进行开发,考虑到 window 系统,这里准备用 wsl2.

首先请必须先行完成上述配置后,再进行 Clion 和 WSL 的结合开发。

运行命令,安装必备的工具链(直接从 CS144 的课程里面扒下来的,反正迟早都得安装 0.0):

apt-get install g++ git clang-tidy clang-format libpcap-dev \
    iptables mininet tcpdump telnet wireshark socat netcat-openbsd \
    doxygen graphviz cmake gdb gcc clang

安装完毕后,我们打开 Clion,进入
Settings –> Build, Execution, Deployment –> Toolchains. 点击 add

之后,Clion 会识别到你刚刚安装好的各种工具,如图所示,就算是成功了。

这样相关的文件就是 Ubuntu 中,此时编译如果 cmake 版本过低, Clion 会有提示,可以根据提示修改 CMakeLists.txt 中最底的版本,一个建议为:

cmake_minimum_required(VERSION 3.22)

之后我们来到
Settings –> Tools –> Terminal

修改 Shell path:

替换默认的 PowerShell 路径为 WSL 的 Bash 路径为 C:\Windows\System32\wsl.exe

点击 Apply → OK。

这些步骤完成后,最好是新建一个 Clion 的 Hello, world! 项目,来验证自己的工具是否完成。

Windows

MacOS

关于 WSL 的介绍

WSL(Windows Subsystem for Linux) 是微软为 Windows 系统提供的一种兼容层技术,允许用户在 Windows 上直接运行原生 Linux 二进制文件(无需传统虚拟机或双系统)。以下是 WSL、虚拟机(如 VMware/VirtualBox)和原生双系统的核心区别:


1. WSL(Windows Subsystem for Linux)

核心特点

  • 轻量级
    通过子系统(非虚拟化)直接调用 Linux 内核接口(WSL2 基于轻量级 Hyper-V 虚拟化),资源占用低。
  • 无缝集成
    • 可直接访问 Windows 文件系统(如 /mnt/c 对应 C: 盘)。
    • 支持在 Windows 终端中运行 Linux 命令,甚至混合使用(如 ls | clip.exe)。
  • 性能
    • 文件系统性能:WSL2 的 Linux 文件系统性能接近原生,但 Windows 文件系统的跨系统访问较慢。
    • 计算密集型任务(如编译):性能接近原生 Linux。
  • 适用场景
    • 开发者需要 Linux 工具链(如 gccpython)。
    • 轻量级 Linux 环境测试或学习 Shell 脚本。

2. 虚拟机(VMware/VirtualBox/Hyper-V)

核心特点

  • 完全隔离
    通过 Hypervisor 虚拟化硬件,运行完整的独立操作系统(包括内核),与宿主机完全隔离。
  • 资源占用高
    需要分配固定内存、CPU 和磁盘空间,运行时会占用较多资源。
  • 灵活性
    • 可安装任意操作系统(如 macOS、BSD)和发行版。
    • 支持快照、克隆等高级功能。
  • 性能损失
    虚拟化层导致计算和 I/O 性能有约 10-20% 的损失(尤其是图形密集型任务)。
  • 适用场景
    • 需要完整 Linux 桌面环境(如 GNOME/KDE)。
    • 多系统兼容性测试或运行 Windows 不支持的软件(如旧版 macOS)。

3. 原生双系统(Windows + Linux)

核心特点

  • 独立运行
    通过分区安装两个系统,每次启动需选择进入 Windows 或 Linux。
  • 性能最优
    直接使用硬件资源,无虚拟化或兼容层开销,适合高性能需求(如游戏、科学计算)。
  • 无互操作性
    • 无法同时运行两个系统,文件系统默认不互通(需手动挂载分区)。
    • 硬件资源(如 GPU)独占使用。
  • 适用场景
    • 需要最大化 Linux 性能(如深度学习、渲染)。
    • 长期专注于 Linux 开发或生产环境。

三者的对比总结

维度WSL虚拟机原生双系统
性能接近原生(计算任务)有虚拟化损失原生性能
资源占用低(仅需少量内存)高(需预分配资源)独占硬件
启动速度秒级启动分钟级启动依赖硬件启动速度
系统隔离部分隔离(共享内核或轻量虚拟化)完全隔离完全独立
文件互操作直接访问双方文件系统需共享文件夹或网络传输需手动挂载分区
适用场景开发、轻量级 Linux 任务多系统测试、完整 Linux 桌面高性能需求、长期 Linux 工作

选择建议

  • 日常开发/学习 Linux:优先选择 WSL(快速、轻便)。
  • 多系统兼容性测试:使用 虚拟机(灵活、安全)。
  • 高性能计算/游戏:安装 原生双系统(资源独占、无性能损失)。
  • 图形化 Linux 需求:虚拟机或双系统(WSL 对 GUI 支持有限,需额外配置)。

通过理解这些差异,可以根据需求选择最适合的方案。


文章作者: 海星来来
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 海星来来 !
  目录