在 Linux 和 macOS 系統上,終端機預設會使用環境變數 $SHELL
所指定的 shell,在 Windows 10 上會預設使用 PowerShell,比較舊版的 Windows 預設使用 cmd.exe。你可以透過在使用者設定中的 terminal.integrated.shell.*
來設定。如果你需要傳遞額外參數給終端機的 shell,你可以透過在使用者設定中的 terminal.integrated.shellArgs.*
來設定。
備註:為了安全性著想,這幾個設定在工作區設定中都是無效的,只能寫在使用者設定中。
對於 Windows 的系統,VS Code 提供了一個很方便的指令讓你可以選擇預設的 Shell,這個指令會嘗試找出安裝在預設路徑的 Shell:「Command Prompt」、「PowerShell」、「PowerShell Core」、「Git Bash」、「WSL Bash」,並且提供一個下拉式選單給你選取預設的 Shell。你可以透過「尋找及執行所有命令」 然後輸入 terminal
尋找並執行「Terminal:選取預設殼層」指令。
就跟其他作業系統一樣,你可以在設定檔中詳細的指定到底要用哪個可執行檔如下:
// Command Prompt
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe"
// PowerShell
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
// Git Bash
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
// Bash on Ubuntu (on Windows)
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe"
備註:為了要在整合式終端機中執行,這個 Shell 的可執行檔必須要是一個終端機的應用程式,它的
stdin/stdout/stderr
都需要可以被重新導向。
小技巧:整合式終端機會使用和 VS Code 一樣的權限來執行,如果要需要整合式終端機以系統管理員身份或是其他權限執行,你可以在整合式終端機中使用系統內建的工具,如
runas.exe
等…。
你可以設定在整合式終端機啟動時,帶什麼參數給它。
舉例來說,想讓 bash 以登入 shell 的方式(也就是會先幫你執行 .bash_profile
)執行的話,你需要帶 -l
的參數給它:
// Linux
"terminal.integrated.shellArgs.linux": ["-l"]
在 shell
、shellArgs
、env
、cwd
這些終端機的參數中都支援使用變數:
// Open the terminal in the currently opened file's directory
"terminal.integrated.cwd": "${fileDirname}"
你可以在這個連結看到完整可用的變數清單。
明天待續…