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

推荐订阅源

Martin Fowler
Martin Fowler
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
The Register - Security
The Register - Security
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
人人都是产品经理
人人都是产品经理
MyScale Blog
MyScale Blog
云风的 BLOG
云风的 BLOG
博客园_首页
U
Unit 42
T
Tailwind CSS Blog
G
GRAHAM CLULEY
F
Full Disclosure
V
Vulnerabilities – Threatpost
T
Tenable Blog
月光博客
月光博客
P
Privacy & Cybersecurity Law Blog
P
Privacy International News Feed
K
Kaspersky official blog
Scott Helme
Scott Helme
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
N
News and Events Feed by Topic
有赞技术团队
有赞技术团队
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
LINUX DO - 最新话题
Recorded Future
Recorded Future
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Help Net Security
Help Net Security
The GitHub Blog
The GitHub Blog
Cisco Talos Blog
Cisco Talos Blog
SecWiki News
SecWiki News
P
Proofpoint News Feed
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
罗磊的独立博客
S
Security Affairs
M
MIT News - Artificial intelligence
L
LINUX DO - 热门话题
美团技术团队
Simon Willison's Weblog
Simon Willison's Weblog
T
Threat Research - Cisco Blogs
Stack Overflow Blog
Stack Overflow Blog
Forbes - Security
Forbes - Security
Hugging Face - Blog
Hugging Face - Blog
博客园 - Franky
V
Visual Studio Blog

PixelNest

会议是效率的杀手 国庆出游记录 对居家办公的一些想法 2022 春节 《搏击俱乐部》的结局 纪念 PAI 头一回达到 100 卡片笔记法 《刑法学讲义》的部分摘录 迁移博客 《UNIX 传奇》摘录 就地过年 一点记录:docker-compose 编排不同项目间的网络 近期读的几本书 办新身份证 git 获取其他分支的单个文件或目录 我的高考成绩 推荐 2020 年上半年的 8 部影视作品 ChromeOS 开发者模式 终于下单了《守望者》 联通来电管家服务 一些实用的 bash 代码片段 关于 鸟枪换炮 《架构整洁之道》摘录 惨淡的星球大战 旧笔记本电脑 if...then... 命令行检测 SSL 证书过期时间 《程序员的职业素养》读书笔记 2019 国庆假期 在 Ubuntu 里按空格键预览 《基本穿搭》笔记 我在 Ubuntu 里安装的一些软件 让人郁闷的英语学习过程 色彩理论基础 向百度主动推送网站链接 两部电视剧 《历史的教训》摘录 新工具 Koa 获取客户端 IP 备案了 apiDoc 基础语法 《代码整洁之道》摘录 BBC 纪录片 《逻辑的乐趣》 读不下去的《原则》 蓝牙鼠标唤醒休眠的 Ubuntu Google 发布会 2018 国庆假期 开发者的时间追踪和统计 使用 curl 发送 POST 请求的几种方式 《重来 2》读书笔记 Linux 和 MacOS 命令行转换图片用法整理 《Go 语言实战》笔记 Win10 微软拼音添加小鹤双拼以及其他配置 针对不同场景临时禁用 eslint 规则的方法 《好妈妈胜过好老师》读书笔记 又读完一本尤·奈斯博的小说 近期写 Go 的一点语法碎片整理 ffmpeg 合并 MP4 M4A 文件 睡前看手机的大问题 《局外人》读书笔记 菊次郎与佐纪 读书笔记 3 菊次郎与佐纪 读书笔记 2 菊次郎与佐纪 读书笔记 1 豆瓣图片服务器防盗链 《如何有效阅读一本书》读书笔记 - 3 《如何有效阅读一本书》读书笔记 - 2 《如何有效阅读一本书》读书笔记 - 1 Vim iskeyword 济南 图个乐 开始看不懂《西部世界》了 剧透 听到几个好故事 过周末 相亲 让人失望的 Apple 悬疑故事 AI 记忆 世纪三部曲 上帝的梦
配置 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 公钥私钥也搬过来……好了。