适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

时间:2023-03-09 15:42:12
适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

什么是WSL

  Windows Subsystem for Linux 简称WLS,适用于Linux的Windows子系统,可以直接在Windows上运行Linux环境(包括大部分命令行工具)

Linux containers与Windows Subsystem for Linux(WSL)区别

  此处以docker与wsl进行一些比较,主要为个人的理解之处。

  docker与wsl同样运行在本机环境中运行,不依赖其他管理程序与虚拟化。

  docker与wsl同样为应用容器。

安装WSL

  在Windows10上,用于Linux的Windows子系,可运行受支持的Linux版本(例如Ubuntu,OpenSuse,Debian等),而无需设置操作系统的复杂性。虚拟机或其他计算机。

使用设置为Linux启用Windows子系统

  1. 打开设置
  2. 点击“应用”
  3. 在“相关设置”部分下,单击“程序和功能”选项。

适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

  1. 单击左窗格中的“打开或关闭Windows功能”选项。

适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

  1. 检查Windows Subsystem for Linux选项。

适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

完成这些步骤后,将配置该环境以下载并运行Windows 10上的Linux版本。

使用Microsoft Store安装Linux发行版

要在Windows 10上安装Linux发行版,请使用以下步骤:

打开Microsoft Store。搜索要安装的Linux发行版。一些可用的发行版包括:

  1. 选择要在您的设备上安装的Linux发行版。
  2. 单击获取(或安装)按钮。
  3. Microsoft Store安装Linux发行版
  4. 单击启动按钮。为Linux发行版创建一个用户名,然后按Enter键。
  5. 指定发行版的密码,然后按Enter。
  6. 重复密码,然后按Enter确认。

完成以上步骤后,即完成安装了WLS(没有图形界面),在开始菜单 运行 wls 启动。

离线安装WLS

  官网指导手册内包含所支持的Linux离线安装包

这里下载的为Ubuntu 18.04,下载后,文件格式为appx格式,本次使用的操作系统为,windows1709企业版,并且卸载了所有的 UWP应用。因此只能使用命令行进行安装。

非LTSC企业版或卸载windows store的可以直接双击安装

  管理员打开Powershell 运行以下命令,将路径替换为下载的离线安装包路径。本次安装的wls默认安装到C盘

Add-AppxPackage .\app_name.appx

查看已经安装的子系统

wslconfig /l

安装时选择其他盘安装

  1. 首先解压.appx文件

  2. LxRunOffline安装:

windows10 1803以上版本下载最新版即可,windows 1709及一下,可以安装2.x版本。

  1. 使用以下命令安装,-f后的文件为解压后文件内根目录的install.tar.gz

语法

LxRunOffline.exe install  -n <install systemname> -d <save path> -f <unzip_path/install.tar.gz>
LxRunOffline.exe install -n ubuntu -d d:\wls -f d:\Ubuntu_1804.2019.522.0_x64\install.tar.gz

等运行完成后(warning可忽略),开始 => 运行wls进入,进入后默认就是root用户。另外开始菜单不会有单独的启动的图标。

配置wsl与windows共用开发环境

  本次配置的开发环境为golang与goland,在windows下与linux下的环境开发与运行为相同的环境。其他的开发环境类似。

  因为wsl共享windows的路径,可以再windows与linux安装golang编译器。并分别设置go env

windows

set GO111MODULE=on
set GOPATH=D:\go_work
set GOPROXY=https://goproxy.io,https://goproxy.cn,direct
set GOROOT=C:\Go

Linux,GOPATH要与windows设置为同一个路径,这样可以保证安装的包为同一个。即实现了同一个开发环境与Linux环境。

export GO111MODULE=on
export GOPROXY=https://goproxy.io,https://goproxy.cn,direct
export GOROOT=/usr/local/go
export GOPATH=/mnt/d/go_work/
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

goland设置

file => setting => Tools => Terminal

C:\Windows\System32\wsl.exe

适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

file => setting => Editor => Code Style

适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

goland wls terminal .bashrc不生效

  在wsl中发现一些环境变量、shell颜色等都不生效。这里需要了解shell的类型

  shell有两种类型,Login ShellNon Login Shell。每一个shell都有自己自定义的脚本来预设值shell运行的环境。

Login Shell

  当成功登陆用户后,将创建登陆shell(通过ssh sudo 或者 terminal)

  查看当前shell是什么类型的shell echo $0

  • Login Shell:-bash或-su。
  • Non Login Shell: bash或su

Login shell 登陆后执行以下脚本:

登陆执行/etc/profile

/etc/profile执行/etc/profile.d中的所有脚本

然后执行用户 ~/.bash_profile

~/.bash_profile 会有命令执行用户目录 ~/.bashrc

~/.bashrc中会执行 /etc/bashrc

Non Login Shell

  Non Login Shell是由Login Shell启动的shell。例如,登陆成功后执行bash,此时是Non Login Shell

Non Login Shell登陆后执行以下脚本:

首先执行 ~/.bashrc

然后 ~/.bashrc 执行 /etc/bashrc

/etc/bashrc 调用 /etc/profile.d 中的脚本

  了解了执行顺序后,按照步骤查看对应问题所在,此处问题没有~/.bashrc中设置的alias和颜色。根据Login shell流程应为~/.bash_profile中去执行~/.bashrc,查看~/.bash_profile 发现文件为空。

  复制一份linux ~/.bash_profile 中的文件内容到对应的~/.bash_profile后发现功能已经正常实现。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi # User specific environment and startup programs PATH=$PATH:$HOME/bin

适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL