在日常开发过程中,咱们也需求常常和指令行打交道,而Windows自带的cmd或许PowerShell或许并不总是那么地随手,尤其是经常运用Linux指令的同学来说。

那么咱们能不能在Windows上运用Linux解说器来代替cmd或许PowerShell呢?事实上是完全能够的,借助MSYS2即可。

MSYS2是一款十分强大的工具链,它提供了一个模仿Linux的环境,使得咱们能够在Windows上运用Linux的指令,而这些指令都是Windows的exe可履行文件方式,除此之外咱们能够运用该环境的bash或许其它终端解说器来代替Windows的cmd,使得咱们能够愈加高效地运用指令行终端。

今日就以在Msys2下面装置装备fish为例,来解说如安在Windows上装备Linux的Shell解说器,咱们假如想要运用bash或许zsh也是同理。

1,下载并装置MSYS2

进入官方网站:传送门

点击下载装置包文件,装置即可:

在Windows上运用Fish替换cmd

2,装备环境变量

装置完结后,需求将Msys2装置目录usrbin这个途径参加至Path环境变量中,例如我将Msys2装置在D:Program FilesMsys2如下:

在Windows上运用Fish替换cmd

那么就要把D:Program FilesMsys2usrbin参加至Path环境变量。

3,装备镜像源并更新

在开始菜单找到MSYS2终端翻开:

在Windows上运用Fish替换cmd

首要更换清华镜像源,运用下列指令:

sed -i "s#https?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*

然后履行下列指令更新:

pacman -Syu

第一次更新到一半或许会提示你输入y关闭进程,关闭后重新翻开终端再次履行该指令更新即可,重复几回直到无更新提示。

4,装备默许用户目录

在Windows上咱们的用户目录通常是C:Users%username%,而MSYS2默许运用的是Linux的/home/$USER这个目录,实际对应Msys2装置目录/home/你的用户名,这不符合咱们平常习气。

咱们能够修正Msys2的默许用户目录,找到Msys2装置目录etcnsswitch.conf文件:

在Windows上运用Fish替换cmd

运用文本编辑器翻开,找到下列行:

在Windows上运用Fish替换cmd

将其修正为:

db_home: /c/Users/%U

终究如下:

在Windows上运用Fish替换cmd

5,装置常用开发工具

通过下列指令即可:

pacman -S fish gcc make git vim pkgconf

这包含了解说器fish以及C/C 编译器、Git等等,这样无需在Windows上单独装置MingW或许Git了!

6,Tabby装备fish终端

上述咱们装置完结了fish解说器,现在咱们就能够装备到其它终端软件了!这儿以Tabby为例,咱们假如运用Windows Terminal也是同理。

在装备和连接中新建:

在Windows上运用Fish替换cmd

装备如图:

在Windows上运用Fish替换cmd

上述指令行为:

'D:Program FilesMsys2msys2_shell.cmd' -msys2 -defterm -here -full-path -no-start -shell fish

留意将D:Program FilesMsys2换成你自己的装置目录!

可见在Msys2下有个msys2_shell.cmd脚本,该脚本能够使得咱们在其它终端例如Windows Terminal、cmd、Tabby等加载Msys2环境,并运用其中的bash或许fish等等,这儿我的整个指令参数如下图:

在Windows上运用Fish替换cmd

上述参数:

  • -msys2 运用Msys2环境
  • -defterm 运用默许终端
  • -here 运用当前目录作为作业目录
  • -full-path 加载悉数环境变量
  • -no-start 在当前终端窗口加载Msys2环境而不是新起一个终端窗口
  • -shell fish 指定运用fish作为解说器,类似的假如你想用bash则写作:-shell bash

保存,到此一个终端装备完结!

最终,设定默许装备为咱们刚刚参加的fish解说器装备即可:

在Windows上运用Fish替换cmd

到此,悉数装备完结!咱们能够在Windows中运用Linux的Shell解说器以及绝大多数指令了!

7,途径问题

在Msys2中,咱们需求运用Linux的途径表明方式,而非Windows途径,比如下列指令的途径表明就是过错的:

# 过错的
cd "C:Usersswsk33"

要将途径转换成下面这样:

cd "/c/Users/swsk33"

也就是说将盘符例如C:D:替换成/c/d的方式,并且把换成/即可。