惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
月光博客
月光博客
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
博客园 - 叶小钗
博客园 - 司徒正美
美团技术团队
博客园_首页
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News

PixelNest

会议是效率的杀手 国庆出游记录 对居家办公的一些想法 2022 春节 《搏击俱乐部》的结局 纪念 PAI 头一回达到 100 卡片笔记法 《刑法学讲义》的部分摘录 迁移博客 《UNIX 传奇》摘录 就地过年 一点记录:docker-compose 编排不同项目间的网络 近期读的几本书 办新身份证 git 获取其他分支的单个文件或目录 我的高考成绩 推荐 2020 年上半年的 8 部影视作品 ChromeOS 开发者模式 终于下单了《守望者》 联通来电管家服务 一些实用的 bash 代码片段 关于 鸟枪换炮 《架构整洁之道》摘录 惨淡的星球大战 旧笔记本电脑 if...then... 命令行检测 SSL 证书过期时间 《程序员的职业素养》读书笔记 2019 国庆假期
配置 Win10 Linux 子系统作为开发环境
2018-08-27 · via PixelNest

Hyper

没想到,有一天我还会在 Windows 下做开发,更没想到,凭着 Win10 的 Linux 子系统,开发体验还不错。

Hyper

首先,要有一个用着舒服的终端,我选用了 Hyper,这是一款基于 Web 技术、跨平台的终端软件。在 Hyper 的窗口菜单里依次选择 File -> Edit -> Perferences… 会打开一个文本文件,是 Hyper 的配置文件,文件名为 .hyper,实际上这是一个 JS 文件,看内容就知道,开头除注释外的第一行是 module.exports = {。我对这个配置文件做了如下修改:

module.exports = {
    // 老年人,喜欢比较大的字体,字小了费眼
    fontSize: 16,
    // 有人是打开终端后输入 `bash` 或者 `ubuntu` 或者 `wsl` 命令进入 Linux 子系统,我个人没有这个需求,所以如此设置,打开终端后直接进 Linux 子系统。
    // 执行 `bash` 和 `wsl` 命令进入 Linux 子系统后,当前的目录跟进入子系统前一样,而执行 `ubuntu` 命令进入子系统后,当前的目录变成了用户的 Home 目录,这样比较符合我的习惯。
    shell: 'C:\\Users\\Username\\AppData\\Local\\Microsoft\\WindowsApps\\ubuntu.exe',
    shellArgs: [],
    // 想通过这个配置去掉在终端下敲命令时出现的 `bell` 声音,然而结果没生效,在按 Tab 补全时,仍然有讨厌的提示音。结果是通过修改 shell 的初始加载文件来达到目的的。下面会提到。
    bell: 'false',
    // 这是给终端配置的主题颜色
    plugins: ['hyper-material-theme'],
}

zsh

这也是个习惯了,在这个子系统里我也装上了 zsh 和 oh-my-zsh 作为日常 shell。为了提升 Win10 下 Linux 子系统的开发体验,我在之前 Ubuntu 环境里的 .zshrc 基础上做了一些修改供这个子系统用。

bell

其中一点就是前面说过的 bell 的问题。我是通过在 .zshrc 里添加下面这句配置来解决的。

unsetopt beep

我尝试过在 /etc/profile 或者 ~/.profile 文件里加上这句配置,结果都没其作用,进入系统 zsh 时,zsh 默认并没有加载这两个文件,我想与其修改这两个文件,再修改 .zshrc 或者 /etc/zsh/zprofile 去 source 那两个 profile 文件,不如干脆就把这句配置直接写到 .zshrc 里吧。这样固然对其他 shell 不起作用,但是我也不用其他 shell,没什么负面影响。

umask

.zshrc 做的另一个修改是加了 umask 022 这句配置。进入 Linux 子系统后,默认的 umask000,这样你创建的每个目录的权限都是 777,那还了得。出于跟上面一段同样的原因,我还是把这句配置加到了 .zshrc 里。

z

zsh 有个好用到让人想哭的插件名叫 z,用上它之后,目录切换如行云流水,操作起来飘若浮云,矫若惊龙。再也不用费脑子去记某个文件完整的路径和文件名了,具体细节不在本文讨论范围,请自行体验。

在 Win10 Linux 子系统里,我自然也给 zsh 配上了这个插件,却发现每次启动终端进入 zsh 时,就给我报个错 _z_precmd:1: nice(5) failed: operation not permitted,Google 了一下,在这里找到了一个答案 _z_precmd:1: nice(5) failed: operation not permitted · Issue #230 · rupa/z

默认状态下,zsh 会尝试以低优先级 (给进程 设置高的 nice 值)来运行后台进程,但是 Win10 子系统没让这么做,给进程设置 nice 值时就报了错。Windows 似乎没有修复这个问题,或者可能是他们并没有认为这是一个问题,只好修改 zsh 的行为 —— 不去修改后台进程的 nice 值 —— 来规避这个报错信息了,方法是在 .zshrc 里添加如下内容:

case $(uname -a) in
   *Microsoft*) unsetopt BG_NICE ;;
esac

做了一点微小的工作,差不多能舒服地用了。之后一顿操作,安装 nvmgit clone 过来 vim、tmux 的 dotfiles 配置文件,原来 Ubuntu 系统的 ssh 公钥私钥也搬过来……好了。