Systems in WSL2 are standard linux distribution. We can treat it as a normal linux system without desktop.

Basic commands for WSL

Run Linux GUI Apps

sudo apt update
sudo apt install gedit -y
sudo apt install gimp -y
sudo apt install nautilus -y
sudo apt install vlc -y
sudo apt install x11-apps -y

Install Linux Distributions

# List available Linux distributions
wsl --list --online
# install
wsl --install <Distribution Name>
# List installed linux distributions
wsl --list --verbose

Export and Import

If you want to import your wsl backup in a new machine, you need to run wsl --install first.

wsl --export <Distribution Name> <FileName>
wsl --import <Distribution Name> <InstallLocation> <FileName>
# for example
wsl --import Ubuntu22 D:\\wsl\\ubuntu22 D:\\ubuntu2204.tar

Identify IP Address

Unregister or uninstall a Linux distribution

wsl --unregister <DistributionName>

Examples

WSL2 + Ubuntu 22.045

1. Change Source List

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

2. Configure Environment

// 配置c语言开发环境
sudo apt install build-essential
sudo apt install git
# sudo apt install g++ gdb make ninja-build rsync zip
sudo snap install clion --classic
sudo snap install code --classic
# sudo apt install code

// 配置java开发环境
sudo apt update
sudo apt install openjdk-17-jdk
sudo update-alternatives --config java // 找到java安装位置,**此处可切换默认jdk版本**
sudo nano /etc/environment 
JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" // 在文件末尾添加环境变量
source /etc/environment // 使配置生效
echo $JAVA_HOME // 验证环境变量是否被正确配置
// 应该可以看到/usr/lib/jvm/java-17-openjdk-amd64
sudo apt remove openjdk-17-jdk // 卸载同样使用包管理
sudo snap install intellij-idea-ultimate --classic // 安装intellij ultimate

// 配置python开发环境
wget <https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh>
bash Anaconda3-2022.10-Linux-x86_64.sh
source ~/.bashrc
conda config --set auto_activate_base False