更好地使用 Windows Subsystem for Linux (或者叫 Bash on Ubuntu on Windows)终端环境

2016-08-20 14:31:53 +08:00
 goreliu

Windows 10 中包含了一个 WSL ( Windows Subsystem for Linux )子系统,我们可以在其中运行未经修改过的原生 Linux ELF 可执行文件。利用它我们可以做很多事情,对开发人员和普通用户都是如此。当然对开发人员的吸引力更大一些,因为这意味着在一些情况,不再需要使用 Linux 虚拟机、双系统、 Cygwin/MSYS2 了。

当前版本( 14901.1000 ) Windows 10 中的 WSL 功能已经比较完善了,和刚出来时不可同日而语,也不再是一个没有实用价值的玩具了(最初的版本连 zsh 和 tmux 等最基本的工具都无法运行,基本没有可用性。但如果现在依然说 WSL 不可用,就有失偏颇了)。但对不想折腾的普通用户来说,用户体验并不好。比如中文显示有问题,不支持中文输入,只支持 16 种颜色,不能隐藏滚动条,不兼容某些命令的输出,不能定制主题和一些其他按键相关配置等。

用过 Cygwin/MSYS2 的朋友都清楚有个名叫 mintty 的终端模拟器,体积小巧配置简单,功能也够用,如果能直接用 mintty 作为 WSL 的终端模拟器,用户体验就好很多了。wsl-terminal 让这成为可能。

wsl-terminal 支持如下功能:

  1. 优秀的兼容性(中文显示/输入、 24 位颜色、命令输出等都正常了)。
  2. 体积小巧,压缩包仅 1.7 M 多,解压后不到 10 M 。
  3. 配置简单, mintty 可以直接在标题栏右键配置, wsl-terminal 的配置文件也很简单。
  4. 可以直接在资源管理器右键打开终端模拟器并定位到当前目录。
  5. 可以将 .sh/.py/.pl 脚本关联到用 wsl-terminal 运行。
  6. 可以将文本文件关联到用 wsl-terminal 里的 vim 运行。
  7. 支持 tmux ,可以在 tmux 里打开新目录,恢复已有的 tmux 会话等。
  8. 支持在 WSL 里直接运行 Windows 程序。

使用方法:

  1. https://github.com/goreliu/wsl-terminal/releases 下载 7z 格式的发布包。
  2. 解压后,直接运行 open-wsl.exe 即可在当前目录打开(可以关联到快捷键)。
  3. 可以运行 tools/add-open-wsl-here-menu.js 在资源管理器右键菜单里添加一个 Open WSL Here 菜单(tools/remove-open-wsl-here-menu.js 删除菜单)。
  4. 可以修改 .sh/.py/.pl/.php 等各种脚本的打开方式为 run-wsl-file.exe ,双击就可以打开。如果需要看结果的话,记得脚本最后加个 sleep 或者 read 。
  5. 可以修改文本文件的打开方式为 vim.exe ,双击就可以用 WSL 里的 vim 打开编辑。
  6. 如果想做 WSL 里边运行 Windows 的软件,运行 outbash-daemon.js ,然后把 bin 里的 wrun 、wstart 、wcmd 复制到 /usr/local/bin (可以直接运行 install_cbwin.sh ),然后 wstart notepad 就可以打开记事本了。cbwin 使用文档: https://github.com/xilun/cbwin
  7. 如果需要使用 tmux,在编辑文件里启用 use_tmux 即可。
17720 次点击
所在节点    Windows
56 条回复
goreliu
2016-08-23 15:05:22 +08:00
@ifoolish 我试过老版本,显示效果是不一样,但也存在问题。主要原因还是字体里这个符号宽度不对,显示全了就会错位,或者整体向后移动,都挺别扭的。不如改下字体里的这个符号(也可能是字体里没有, fallback 到其他字体导致的),或者换个符号。
hronro
2016-08-25 23:23:00 +08:00
试用了一下,貌似我这边显示中文还是有问题

goreliu
2016-08-26 08:00:04 +08:00
@hronro 你用的是什么字体,默认字体也一样吗?
hronro
2016-08-27 15:51:27 +08:00
字体是 Courier New ,你所谓的默认字体是指?
反正我用 Consolas 也是一样的效果
goreliu
2016-08-27 16:27:30 +08:00
@hronro 在我这里两个字体都正常,没遇到你说的情况。
hronro
2016-08-27 22:11:16 +08:00
@goreliu 我用的是英文版的操作体统,估计是英文版的 WIN10 ,中文字体的 fallback 不一样
goreliu
2016-08-27 22:23:20 +08:00
@hronro 那有可能,可以换个中文字体试试。
crytis
2016-12-02 15:16:53 +08:00
楼主还在一直更新呐 好顶赞。
ps windows 下的各种终端是不是都没法达到 on my zsh 主题截图的效果,比如 ys ,只有 mac 下可以?
blueboyggh
2017-04-11 09:58:20 +08:00
这个能不能默认打开的时候直接定位到 WSL 的用户文件夹下?就是直接 bash ~
Shawnone
2017-07-03 17:32:58 +08:00
@goreliu 运行 open-wsl.exe 后窗口一闪而过就退出了是什么情况?
mortence
2017-07-17 14:16:44 +08:00
@goreliu 我运行了也是 @Shawnone 一样的情况,应该怎么解决呢
iamfredng
2017-08-02 05:12:36 +08:00
@mortence @Shawnone 这个是因为 wslbridge.exe 和 wslbridge-backend 两个文件的版本是旧的 0.2.2,可以去 https://github.com/rprichard/wslbridge/releases/tag/0.2.3 这里下载 0.2.3 来代替 bin 目录下的同名文件。我用的 cygwin64 版本的压缩包
mortence
2017-08-03 19:19:56 +08:00
@iamfredng 我把 ubuntu 从 14 升到 16,已经可以正常使用了
goreliu
2017-09-18 10:50:14 +08:00
最近几天更新了很多功能:
https://www.v2ex.com/t/391405
runapp
2017-09-19 22:48:19 +08:00
能够操作 raw_socket 本身就是很危险的行为,linux 下 traceroute 是需要 root 权限的。ping 倒是不需要……
goreliu
2017-09-20 08:19:41 +08:00
@runapp WSL 是不支持 traceroute 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/300618

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX