Last Updated on 2021-04-13 by Clay
Bash on Ubuntu on Windows,或者是稱之為 Windows Subsystem for Linux (WSL),顧名思義,是位於 Windows 底下的 Linux 子系統。
有時候,在開發軟體的過程中,會遇到許多只能由 Linux 系統來使用的套件與函式庫。有許多方便的套件,是無法在 Windows 上使用的。
但習慣於使用 Windows 的程式員,難道真的只能選擇裝個 VM、或者乾脆將整個系統灌成 Linux 嗎?
當然不是的。收到了廣大的使用者的要求,Windows 終於在 Win10 上更新了支援原生的 Linux 系統 —— 就是本文介紹的這套 Bash on Ubuntu on Windows。
以下,就來介紹這套軟體的安裝、以及簡單的測試、甚至圖形化界面的安裝方法。
切記,目前可能尚有一些指令還不能在上面跑,不過我目前常用的幾種指令顯然都沒有問題。
安裝
Step 1: 開啟『開發人員模式』
首先,按 windows 鍵打開選單,然後直接搜尋『開發人員』,通常你就會找到『開發人員設定』,在這裡,我們要將『開發人員模式』選取。
Step 2: 開啟『適用於 Linux 的 Windows 子系統』
同樣打開選單,直接搜尋『開啟或關閉 Windows 功能』。打開後你通常會看到:
以上這樣的畫面。然後拉到最底下,將『適用於 Linux 的 Windows 子系統』勾選起來。
如此一來,通常便會自動安裝了。
重新開機以後,打開 cmd(命令提示字元),然後輸入:
bash
然後輸入 UNIX 的帳號、密碼,簡單的 Bash on Ubuntu on Windows 就裝好了。
如果你有看到任何報錯訊息,例如:
適用於 Linux 的 Windows 子系統沒有任何已安裝的發行版本。
您可以透過瀏覽 Microsoft Store 來安裝各種發行版本:
https://aka.ms/wslstore
那麼,使用 Microsoft Store (一樣可以從開始選單裡面找到,不然就用關鍵字搜尋),然後搜尋 ubuntu subsystem。
在這裡,建議安裝 Ubuntu 16.04 LTS,之後若要安裝圖形化界面的話會比較穩定。若需要升級到 18.04,之後也可以透過指令升級。
下載好之後,選擇『開啟』,應該就會看到以下畫面:
在這裡輸入帳號密碼,就完成基本的安裝了。
之後在『開始』欄位搜尋『ubuntu』,就可以看到我們安裝好的子系統程式了。
測試 Ubuntu 系統
首先,來個簡單的測試吧!
開啟 ubuntu bash,使用:
vim test.sh
使用 vim 來撰寫簡單的 shell 指令。
按 a 進入 Insert 模式,寫下下述的指令:
for i in $(seq 1 10) do echo $i done
按下 Esc 離開 Insert 模式,使用『:wq』來存檔離開。
回到 terminal 後,使用:
sh test.sh
來呼叫我們剛才寫下的指令。若是能順利印出:
1
2
3
4
5
6
7
8
9
10
則代表你的 Linux 系統很正常地運作了,恭喜!
圖形化界面
如果還是想要有個圖形化界面的話(雖然我並不推薦),可以使用 vcXsrv Windows X Server 這套軟體。
可以從這裡下載: https://sourceforge.net/projects/vcxsrv/
點擊打開安裝檔:
安裝好後便啟動 XLaunch,可以看到下面的畫面:
然後我們回到 Ubuntu Bash,使用以下指令開始安裝必須的套件。
sudo apt-get update
sudo apt-get install ubuntu-desktop
sudo apt-get install unity
sudo apt-get install compizconfig-settings-manager
這裡安裝的套件比較大,記得等待一下。
安裝好後使用 compiz 指令調整設定。
export DISPLAY=localhost:0
sudo ccsm
這裡最重要的是將 『Ubuntu Unity Plugin』勾選起來,記得同意啟用這個選項的所有設定。
然後選擇 Close 離開這個畫面。
回到 Ubuntu Bash,輸入以下指令:
sudo compiz
順利的話,就會看到以下這個畫面:
這樣一來,顯示圖形化界面的部份就大功告成了。
移除
移除 Bash on Ubuntu on Windows 也同樣簡單,我們首先打開 cmd (命令提示字元),然後使用 wslconfig 這個指令。
這個指令是在 2019 以後才啟用的,若是在這之前的版本,需要用以下的指令來進行移除:
lxrun /uninstall /y
若是出現 『'lxrun' 不是內部或外部命令、可執行的程式或批次檔。』代表你的系統是新的版本,可以使用 wslconfig 這個指令來查看。
wslconfig /l
這個指令可以查看目前安裝的子系統的發行版本。
例如我的版本為 Legacy,那麼我可以使用以下指令來移除這個版本。
wslconfig /u Legacy
這樣一來就成功移除了。