多虧了 WSL,我順利從 OS X 換到 Windows 10 了

Dino Su
AppDev Ooops
Published in
4 min readMay 27, 2019

TL;DR: Windows 10 確實不錯,但還沒有好到可以滿足我這個測試工程師的全部需求。如果你也跟我一樣因為工作的關係必須使用 Windows 系統的話,這裡是一些讓我沒這麼痛苦的設置,希望也可以幫助你減緩轉換的痛苦。

WSL

CLI 是我最喜歡的使用者介面,最大的原因是 CLI 指令可以很容易的分享與執行,同時他又可以做版本管理,至於在終端機裡敲各種指令有多酷我就不說了。

WSL 可以透過下面這兩個 PowerShell 指令來啟用與安裝

# Enable WSL
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
# Download Ubuntu 16.04
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing

完整的說明文件可以參考官方的 WSL 安裝指南

Hyper

Hyper 是我目前主要使用的終端機軟體,儘管它有 FPS 偏低、顯示格式常會在變更視窗大小後跑掉的問題,但它目前仍是我認為 Windows 上最好用的終端機軟體。

幸好微軟已經注意到一個好的終端機對 WSL 系統有多重要了,所以在 Microsoft Build 2019 的活動上微軟公開了正在開發中的 Windows Terminal,有興趣的人可以持續關注 Windows Terminal 的發展。

Bash

安裝後的第一件事我會先把 Hyper 用的 Shell 從 PowerShell 換成 WSL 上的 Bash

// .hyper.js
// PowerShell on Windows
// shell: 'C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe',
// Bash on Windows
shell: 'C:\\Windows\\System32\\bash.exe',

然後是設定 SSH 金鑰,個人習慣是把私人與工作用 Key 用 Email 區分開來並且透過 ssh-agent 管理。

.bashrc# Git
eval $(ssh-agent -s)
ssh-add $HOME/.ssh/chinglong.su.gmail.com
ssh-add $HOME/.ssh/dinosu.kkbox.com

然後設定一些每天都會用到的指令像是 open, google

.bash_aliases# 例,開啟目前所在的資料夾: "open ."
open() {
powershell.exe start $1
}
# 例,在 Google 搜尋科科測試: "google 科科測試"
google() {
open "https://google.com?q=${1}"
}

另外特別值得一提的是在 WSL 內存取 Windows 指令時有些特別不便的地方,像是要呼叫 adb的話你必須使用 adb.exe 不然就會找不到,還好透過設定 alias 就可以無須改變原先的使用習慣。

.bash_aliasesalias adb=adb.exe
alias docker=docker.exe

而要透過 Bash 來使用執行 .bat的話則是要呼叫 cmd

.bash_aliasesuiautomator() {
cmd.exe '/C C:\Users\dinosu\AppData\Local\Android\Sdk\tools\bin\uiautomatorviewer.bat'
}

要快速轉換 WSL 路徑或 Windows 路徑的話則可以使用從 17046 版本 開始提供的 wslpath,使用方法如下

wslpath usage:
-a force result to absolute path format
-u translate from a Windows path to a WSL path (default)
-w translate from a WSL path to a Windows path
-m translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’

例: wslpath ‘c:\users’

透過上述這些設置,多數在 OS X/Linux 上指令都可以在 WSL 裡延續使用,目前比較苦惱的是我覺得微軟的輸入法好難用,好難適應啊!

--

--

Dino Su
AppDev Ooops

Software Engineer, focusing on test engineering.