ターミナル プロファイル
ターミナル プロファイルは、実行可能パス、引数、その他のカスタマイズで構成される、プラットフォーム固有のシェル構成です。デフォルトでは、いくつかのプロファイルが自動的に検出され、カスタマイズまたは追加できます。
プロファイルの例
{
"terminal.integrated.profiles.windows": {
"Custom Init": {
"path": "pwsh.exe",
"args": [
"-noexit",
"-file",
"${env:APPDATA}\\PowerShell\\custom-init.ps1"
]
}
},
"terminal.integrated.defaultProfile.windows": "Custom Init"
}
上記の例に示すように、APPDATA
環境変数を使用してターミナル プロファイルで変数を使用できます。使用可能な変数の一覧は、変数リファレンスのトピックにあります。
既定のターミナル プロファイルを構成するには、ターミナル: 既定のプロファイルの選択 コマンドを実行します。このコマンドは、新しいターミナル ドロップダウンからもアクセスできます。
既定のターミナル プロファイル シェルは、Linux および macOS では $SHELL
、Windows では PowerShell にデフォルト設定されています。VS Code は、ほとんどの標準シェルを自動的に検出し、既定として構成できます。
プロファイルの構成
新しいプロファイルを作成するには、ターミナル: 既定のプロファイルの選択 コマンドを実行し、シェルの右側にある [構成] ボタンをアクティブにして、それをベースにします。これにより、settings.json
ファイルで手動で調整できる新しいエントリが設定に追加されます。
プロファイルは、path
または source
のいずれか、およびオプションの引数のセットを使用して作成できます。source
は Windows でのみ使用でき、PowerShell
または Git Bash
のインストールを VS Code に検出させることができます。または、シェル実行可能ファイルを直接指す path
を使用することもできます。次に、プロファイル構成の例をいくつか示します。
{
"terminal.integrated.profiles.windows": {
"PowerShell -NoProfile": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.profiles.linux": {
"zsh (login)": {
"path": "zsh",
"args": ["-l"]
}
}
}
プロファイルでサポートされているその他の引数は次のとおりです。
overrideName
: 実行中のプログラムを検出する動的なターミナル タイトルを静的なプロファイル名で置き換えるかどうかを示すブール値。env
: 環境変数とその値を定義するマップ。環境から削除するには、変数をnull
に設定します。これは、terminal.integrated.env.<platform>
設定を使用してすべてのプロファイルに対して構成できます。icon
: プロファイルに使用するアイコン ID。color
: アイコンをスタイル設定するためのテーマ カラー ID。
ヒント: path、args、および env はすべて、変数の解決をサポートしています
既定のプロファイルは、terminal.integrated.defaultProfile.*
設定を使用して手動で定義できます。これは、既存のプロファイルの名前に設定する必要があります
{
"terminal.integrated.profiles.windows": {
"my-pwsh": {
"source": "PowerShell",
"args": ["-NoProfile"]
}
},
"terminal.integrated.defaultProfile.windows": "my-pwsh"
}
ヒント: 統合ターミナル シェルは、VS Code の権限で実行されています。管理者 (管理者) 権限または異なる権限でシェル コマンドを実行する必要がある場合は、ターミナル内で
runas.exe
などのプラットフォーム ユーティリティを使用します。
組み込みプロファイルの削除
組み込みプロファイルを削除し、新しいターミナル ドロップダウンに表示されないようにするには、プロファイルの名前を null
に設定します。たとえば、Windows で Git Bash
プロファイルを削除するには、次の設定を使用します。
{
"terminal.integrated.profiles.windows": {
"Git Bash": null
}
}
タスク/デバッグ プロファイルの構成
デフォルトでは、タスク/デバッグ機能は既定のプロファイルを使用します。既定のプロファイルに PowerShell の重いスタートアップ スクリプトや非 POSIX 準拠シェルなどがある場合、これは理想的ではない可能性があります。デバッグ/タスク機能でのみ使用されるプロファイルを構成するには、terminal.integrated.automationProfile.<platform>
設定を使用します。
{
"terminal.integrated.defaultProfile.osx": "fish",
// Use a fully POSIX-compatible shell and avoid running a complex ~/.config/fish/config.fish
// for tasks and debug
"terminal.integrated.automationProfile.osx": {
"path": "/bin/sh"
}
}
プロファイル固有のキーボード ショートカット
専用のキーボード ショートカットを使用して特定のプロファイルでターミナルを起動するには、workbench.action.terminal.newWithProfile
コマンドを使用します。このコマンドは、プロファイル名とオプションの場所を引数として取ります。たとえば、Ctrl+Shift+T を zsh
プロファイルでターミナルを開くようにバインドするには、次のようにします。
{
"key": "ctrl+shift+t",
"command": "workbench.action.terminal.newWithProfile",
"args": {
"profileName": "zsh",
"location": "editor"
}
}
安全でないプロファイルの検出
特定のシェルは、Windows 環境上の別のユーザーが書き込むことができるパスなど、安全でないパスにデフォルトでインストールされています。VS Code はこれらを検出しますが、ターミナル: 既定のプロファイルの選択 コマンドを使用して明示的に構成されるまで、適切なプロファイルとして公開しません。安全でないプロファイルを構成すると、追加する前に警告が表示されます。
Cmder
Cmder 自体はターミナルですが、次のプロファイルを使用して VS Code で Cmder シェルを使用できます。
{
"terminal.integrated.profiles.windows": {
"cmder": {
"path": "C:\\WINDOWS\\System32\\cmd.exe",
"args": ["/K", "C:\\cmder\\vendor\\bin\\vscode_init.cmd"]
}
},
"terminal.integrated.defaultProfile.windows": "cmder"
}
このプロファイルは、CMDER_ROOT
環境変数が設定されている場合に自動的に選択されるはずです。C:\cmder
にインストールされている場合は、安全でないプロファイルとしても検出されます。詳細については、Cmder の wiki を参照してください。
Cygwin
Cygwin 自体はターミナルですが、次のプロファイルを使用して VS Code で Cygwin シェルを使用できます。
{
"terminal.integrated.profiles.windows": {
"Cygwin": {
"path": "C:\\cygwin64\\bin\\bash.exe",
"args": ["--login"]
}
},
"terminal.integrated.defaultProfile.windows": "Cygwin"
}
このプロファイルは、デフォルト パス C:\cygwin
または C:\cygwin64
にインストールされている場合、安全でないプロファイルとして自動的に検出されるはずです。
Git Bash
VS Code が git-bash.exe (ターミナル) ではなく bash.exe (シェル) を使用する場合の Git Bash の制限事項は、履歴がシェル セッション間で保持されないことです。これを回避するには、~/.bashrc
または ~/.bash_profile
ファイルに以下を追加します。
export PROMPT_COMMAND='history -a'
これにより、プロンプトが出力されるたびにシェルが history -a
を呼び出し、セッションの現在のセッション コマンドをバックアップ履歴ファイルにフラッシュします。
MSYS2
MSYS2 の bash シェルは、次のプロファイルで構成できます。
{
"terminal.integrated.profiles.windows": {
"bash (MSYS2)": {
"path": "C:\\msys64\\usr\\bin\\bash.exe",
"args": ["--login", "-i"],
"env": { "CHERE_INVOKING": "1" }
}
}
}
CHERE_INVOKING
環境変数は、ログイン初期化スクリプトに、$HOME
で開くのではなく、作業ディレクトリを保持するように指示するために使用されます。
このプロファイルは、デフォルト パス C:\\msys64
にインストールされている場合、安全でないプロファイルとして自動的に検出されるはずです。
Windows PowerShell
PowerShell 6 以降がインストールされている場合、Windows PowerShell はデフォルトではプロファイル リストに含まれていません。Windows PowerShell をプロファイルとして追加するには、新しいターミナル ドロップダウンで [既定のプロファイルの選択] オプションを選択し、[Windows PowerShell] 項目を選択します。これにより、プロファイルが構成され、既定として設定されます。
WSL
ローカル マシンで VS Code を実行している場合、Windows Subsystem for Linux シェルは自動的に検出されるはずです。セットアップによっては、多数のディストリビューションがインストールされている場合、これは迷惑になる可能性があります。WSL プロファイルのより詳細な制御のために、自動検出は terminal.integrated.useWslProfiles 設定で無効にできます。次に、WSL シェルを手動で構成する方法の例を示します。
{
"terminal.integrated.profiles.windows": {
"Debian (WSL)": {
"path": "C:\\WINDOWS\\System32\\wsl.exe",
"args": [
"-d",
"Debian"
]
}
}
}
よくある質問
ターミナルの $PATH
環境変数に重複するパスがあるのはなぜですか? また、macOS でパスが逆になるのはなぜですか?
これは、macOS でターミナルが VS Code の環境を使用して起動される方法が原因で発生する可能性があります。VS Code が最初に起動するときに、「開発環境」をソース コード化するために、構成されたシェルをログイン シェルとして起動します。これにより、~/.profile
/~/.bash_profile
/~/.zprofile
スクリプトが実行されます。次に、ターミナルが起動すると、ログイン シェルとしても実行され、標準パスが先頭に配置され (たとえば、/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
)、シェル環境が再初期化されます。
より深く理解するために、オペレーティング システムの組み込みターミナル内で内部ログイン シェルを起動して、何が起こっているかをシミュレートできます。
# Add /test to the beginning of $PATH
export PATH=/test:$PATH
# Echo $PATH, /test should be at the beginning
echo $PATH
# Run bash as a login shell
bash -l
# Echo $PATH, the values should be jumbled
echo $PATH
残念ながら、Linux とは異なり、スタンドアロンの macOS ターミナルはすべてデフォルトでログイン シェルとして実行されます。これは、ユーザーがシステムにログインするときに macOS がログイン シェルを実行しないためです。これにより、エイリアスを rc
スクリプトに記述する必要がある場合に、プロファイル スクリプトでエイリアスを初期化するなど、「悪い動作」が推奨されます。
これに対する直接的な修正が 2 つあります。1 つ目は、"terminal.integrated.inheritEnv": false
を設定することです。これにより、ターミナルの環境からほとんどの環境変数が削除されます (ただし、HOME
、SHELL
、TMPDIR
など、いくつかの重要な変数は除きます)。
もう 1 つの修正は、ターミナル プロファイルを作成し、その args
を []
に設定して、ターミナルでログイン シェルを実行しないようにすることです。この修正を選択する場合は、プロファイル スクリプトのエイリアスが ~/.bashrc
/~/.zshrc
ファイルに移動されていることを確認する必要があります。エイリアスは、設定されているシェルにのみ適用されるためです。