[ Coding ] Windows 10 + Visual Studio Code + ShellCheck

標題說明了一切。

ShellCheck 是一個開源專案,用處是檢查 bash/sh/ksh 腳本(shell script)的語法問題,不必運行腳本就能解決很多粗心造成的錯誤(還可以避免某些致命的錯誤毀掉測試環境)。除此之外還會提供進階建議 。對於需要經常書寫腳本的人而言是很有用的小工具 。

Windows Subsystem for Linux(簡稱 WSL)是 Windows 10 一個重要的新功能,一個低成本虛擬化的 Linux 環境,不必依賴 Cygwin 等專案也能使用 Linux 工具,對工程師來說是十分有利的工具(雖然尚不及全面改用 FreeBSD 改寫核心的 OS X)。由於我撰寫腳本是在 Windows 10,但也常常使用 WSL 做事,因此我希望在 WSL 中安裝 ShellCheck 而不是安裝 Windows 執行檔,方便兩個環境都能使用。

我常用的編輯器有 Notepad++,Sublime 跟 Visual Studio Code(以下簡稱 VSCode)。編寫腳本時,就上色性能來說 Sublime 是最棒的。VSCode 在某些情況下會誤判(尤其我撰寫的內容是 shell script 與 SQL statement 混合的時候)。雖然 Sublime 也有支援 ShellCheck 的 plugin,但是在 Windows 10 下面一直跑不起來。而 VSCode 的 ShellCheck extension 最棒的是可以選擇 Windows 10 執行檔或是透過 WSL 執行 Linux 執行檔,所以本文是以 VSCode 作為編輯器,呼叫 ShellCheck 協作。

  1. 需要啟動 WSL 支援。啟動後從 Windows Store 選擇一個 Linux distribution,我用的是 Ubuntu 18.04。
  2. 安裝 ShellCheck。由於目前 Ubuntu package 提供的 ShellCheck 還停留在 0.4.6,但最新版是 0.6.0。建議從 ShellCheck 專案下載預先編譯的執行檔,放到一個存在於 PATH 變數的目錄(例如 /usr/local/bin 或 /usr/bin)。
  3. 啟動 VSCode,在 Extensions 搜尋 shellcheck 找到該 extension 並安裝它。
  4. 在 VSCode 中,從 File -> Preferences -> Settings(快捷鍵 Ctrl + ,),點開左欄最下方的 Extensions,找到展開的 ShellCheck。點右欄的 Edit in settings.json。
  5. 在 User Settings 編輯畫面,在右欄 USER SETTINGS 加入一行

    “shellcheck.useWSL”: true
  6. 儲存後就可以開始編輯腳本了。

在 VSCode 中不必刻意呼叫 ShellCheck。每次載入腳本時 ShellCheck 就會主動作業。點擊編輯器視窗左下角的 × △ ! 就會跳出 ShellCheck 檢查結果視窗。