WSL2的环境配置(安装+网络配置+基本美化)

文章目录

0. 前言

之前用了很久的WSL2,重装了系统后发现想恢复以前的环境难上加难,各路教程相当繁杂,为了方便我以后使用,遂在此记录。

1. 安装

检查更新

打开终端(最好管理员),输入

bash 复制代码
wsl --update

设置默认版本

sh 复制代码
wsl --set-default-version 2

列出当前已安装的发行版

bash 复制代码
wsl -l -v

我这里由于已经安了个发行版,就会显示,如果没安会提示你没有安装

列出可安装版本

bash 复制代码
wsl --list --online

选择版本安装

这里面以Ubuntu为例,没有版本后缀的代表最新入口,其他的带版本的顾名思义,我这里选取Ubuntu玩玩:

bash 复制代码
wsl --install Ubuntu

然后自行配置账号和密码即可(注:密码看不见是正常现象 ),设置完成后,会自动给你进入Ubuntu:

这里我们重启terminal,不出意外的话在下拉菜单这里就多了一个Ubuntu的选项(根据你的实际安装版本而定):

再次执行

bash 复制代码
wsl -l -v

会成功输出你新增的发行版

2. 网络配置

前期检测

我们打开一个Ubuntu的标签,会发现他会提醒检测到配置了代理但是wsl没走

这里可以在WSL Setting里用mirror模式,不过那个有可能有点问题,我这里就用传统方法。

这里死活审核不通过,这一段转发知乎了:链接

4. 给APT换源

检测

然后执行

bash 复制代码
sudo apt update

更新一下,如果发现更新的速度卡卡的(几个M都跑半天),说明你需要给apt换源

替换清华源

执行:

bash 复制代码
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo nano /etc/apt/sources.list

将内容替换成清华源:

bash 复制代码
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse

提示:nano中Ctrl+O后Enter保存、Ctrl+X退出

然后保存更新:

bash 复制代码
sudo apt update && sudo apt upgrade

会发现这次就很快了。

5. 换用oh-my-zsh+powerlevel10k

原版bash实在是既称不上好用、也称不上好看,这里换成oh-my-zsh。

安装zsh

bash 复制代码
sudo apt update && sudo apt upgrade -y
sudo apt install zsh -y

设置终端

bash 复制代码
chsh -s /bin/zsh

这个时候我们检查一下当前终端,发现依旧是bash,这是因为我们没有重启

bash 复制代码
echo $SHELL

我们重新打开系统,会发现弹了个这个:

我们可以先不管他,先按q,进来后发现现在是zsh了:

安装oh-my-zsh

使用官网命令安装:

bash 复制代码
sh -c "$(curl -fsSL https://install.ohmyz.sh/)"

加载以前的配置

这个时候我们curl一下Google,会发现超时:

bash 复制代码
curl -I https://www.google.com

这是因为我们刚刚的代理配置是写在bashrc里的,而现在默认改成了zsh,因此不会去加载那个配置文件,所以我们需要手动加载一下,不过直接加载整个bashrc的话不够优雅,也会报一些错误(zsh不认识bash的一些语法),因此我们可以单独把刚刚那段代理配置拿出来:

bash 复制代码
vi ~/.wsl-proxy

(内容见知乎

然后编辑zshrc

bash 复制代码
 vi ~/.zshrc

在最上方加入这一行:

bash 复制代码
[[ -f ~/.wsl-proxy ]] && source ~/.wsl-proxy

完成后使用:

bash 复制代码
source ~/.zshrc

这样就搞定了。

配置主题(powerlevel10k)

oh my zsh有很多主题,这里有一个主题的受欢迎排名,

我就选择了powerlevel10k(这个链接是官方安装教程),主要奔着显示指令cost时间去的。

首先我们要安装扩展字体,下载这四个字体,你也可以下载别的Nerd Font

由于我们这里是WSL,因此只需要在Windows下下载后点击安装即可:

然后在终端的设置>外观中选择终端字体为MesloLGS NF:

然后安装:

bash 复制代码
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"

也可以用官方镜像源:

bash 复制代码
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"

然后编辑

bash 复制代码
vi ~/.zshrc

设置主题为powerlevel10k/powerlevel10k

然后重启zsh

bash 复制代码
exec zsh

首次安装会弹出配置:

前面几个是字体校验,显示正常的话应该都是第一个,后面几个就根据自己的喜好自己配置了,我配好了是这样的:

后面也可以通过命令手动进入配置:

bash 复制代码
p10k configure

我们还可以进一步客制化p10k,编辑它的配置文件:

bash 复制代码
vi ~/.p10k.zsh

可以看到很多东西都是注释了的:

比如我们可以随便取消几个注释,然后source ~/.zshrc

顺带一提,在WSL中我们可以用code命令直接使用vscode查看编辑文件:

bash 复制代码
code ~/.p10k.zsh

在其中,你还可以简单地自定义一些显示内容,比如自带的内存显示与磁盘显示一个只显示用了的内存,一个只显示用了的磁盘百分比,我们可以写一个函数:

bash 复制代码
  # ===========================
  # Custom Disk Usage Segment
  # ===========================
  function prompt_my_disk_usage() {
    # 获取磁盘信息(/)
    local total used percent
    total=$(df -h / | awk 'NR==2{print $2}')
    used=$(df -h / | awk 'NR==2{print $3}')
    percent=$(df / | awk 'NR==2{print int($5)}')

    # 根据磁盘使用率选择配色(继承 p10k 内置 disk_usage)
    local fg bg
    if (( percent < 80 )); then
      fg=$POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND
      bg=$POWERLEVEL9K_DISK_USAGE_NORMAL_BACKGROUND
    elif (( percent < 90 )); then
      fg=$POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND
      bg=$POWERLEVEL9K_DISK_USAGE_WARNING_BACKGROUND
    else
      fg=$POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND
      bg=$POWERLEVEL9K_DISK_USAGE_CRITICAL_BACKGROUND
    fi

    # 拼接显示内容(使用  图标)
    local text="$used/$total | $percent%%"

    # 输出 segment
    p10k segment -i '' -t "$text" -f $fg -b $bg
  }

然后把这个prompt放在想要的位置:

类似的,写一个my_ram

bash 复制代码
  function prompt_my_ram() {
    # 获取内存信息:单位 MiB
    local total used percent
    total=$(free -m | awk '/Mem:/ {print $2}')
    used=$(free -m | awk '/Mem:/ {print $3}')
    percent=$(( used * 100 / total ))

    # 转换为 GB(保留 1 位小数)
    local human_total human_used

    if (( total > 1024 )); then
      human_total=$(printf "%.1fG" "$(echo "$total / 1024" | bc -l)")
      human_used=$(printf "%.1fG" "$(echo "$used / 1024" | bc -l)")
    else
      human_total="${total}M"
      human_used="${used}M"
    fi

    # 使用 p10k 内置 RAM 颜色
    local fg bg
    if (( percent < 80 )); then
      fg=$POWERLEVEL9K_RAM_FOREGROUND
      bg=$POWERLEVEL9K_RAM_BACKGROUND
    elif (( percent < 90 )); then
      fg=$POWERLEVEL9K_RAM_WARNING_FOREGROUND
      bg=$POWERLEVEL9K_RAM_WARNING_BACKGROUND
    else
      fg=$POWERLEVEL9K_RAM_CRITICAL_FOREGROUND
      bg=$POWERLEVEL9K_RAM_CRITICAL_BACKGROUND
    fi

    # 显示格式
    local text="${human_used}/${human_total} | ${percent}%%"

    # 输出 segment(去掉 -n)
    p10k segment -i '' -t "$text" -f $fg -b $bg
  }


注:WSL默认只分配一半大小的内存,这是正常的

oh-my-zsh插件

折腾完外观,现在来搞zsh的插件:

bash 复制代码
code ~/.zshrc

可以看到,默认是启用了一个git插件的:

官方有一些内置插件,我们可以从这个文件夹查看:

bash 复制代码
cd ${ZSH}/plugins && ls

选择想要的插件或者安装第三方插件,然后加plugins里就行

6. oh-my-zsh 插件推荐

我在用的插件:

z

内置的插件,缓存打开的文件夹,可以通过文件夹名快速打开文件夹

zsh-autosuggestions

缓存之前用过的命令,显示你可能希望输入的命令,按上下键可以切换

安装:

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

zsh-syntax-highlighting

为命令加上语法高亮

安装:

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

sudo

内置的插件,按两下ESC为命令加上sudo

colored-man-pages

内置的插件,为man手册加上高亮

hitokoto

内置插件,随机生成一句话,不过要先安装jq

7. 结语

暂时就这样吧,后面会更VS+wsl开发的环境搭建

相关推荐
学困昇2 小时前
Linux基础开发工具(下):调试器gdb/cgdb的使用详解
linux·运维·服务器·开发语言·c++
liulilittle2 小时前
Linux shell 搜索指定后缀名文件,并复制到指定目录。
linux·服务器·数据库
必胜刻2 小时前
Redis哨兵模式(Linux)
linux·数据库·redis
阿猿收手吧!3 小时前
【Linux】Ubuntu 24安装webbench
linux·运维·ubuntu
生信大表哥3 小时前
如何在服务器上使用 Gemini 3 进行生信分析:从入门到进阶
linux·人工智能·语言模型·数信院生信服务器·生信云服务器
buyutang_3 小时前
Linux 网络编程:深入浅出UDP协议Socket编程规范
linux·网络·udp
model20053 小时前
Alibaba linux 3安装LAMP(3)
linux·运维·服务器
JosieBook4 小时前
【IDEA】IntelliJ IDEA 快捷键大全(Windows/Linux 版)
linux·windows·intellij-idea
赖small强4 小时前
【Linux 内存管理】Kernel Buddy 分配器:Page Block Size 实现原理与工作机制深度解析
linux·buddy·page block size