Windowsでは、開いた新しいターミナルセッションごとにコマンドstart-ssh-agent.cmd
を実行する必要があります。私の開発環境はVSCodeで、毎日12個の新しい端末を開いています。各ターミナルが開いたら、このコマンドを手動で実行する必要があります。
ターミナルを開くたびに、ターミナルでこのコマンドを実行する方法はありますか?
これは、VSCode拡張機能、VSCode構成(設定)、またはWindows環境構成の形式をとることがあります。
何か案が?
次のことができます。
"terminal.integrated.shellArgs.windows": ["start-ssh-agent.cmd"]
変更元: https://code.visualstudio.com/docs/editor/integrated-terminal#_Shell-arguments
質問をした直後に、私は実際にこれに対するかなりきちんとしたLinuxソリューションを見つけました。 Bashのようなシェルを使用している場合は、Windowsでも機能するはずです。 VanillaCMDを使用してそれが可能かどうかはわかりません。
このようなものを.bashrc
または.zshrc
に追加します。
#
# Allow parent to initialize Shell
#
# This is awesome for opening terminals in VSCode.
#
if [[ -n $ZSH_INIT_COMMAND ]]; then
echo "Running: $ZSH_INIT_COMMAND"
eval "$ZSH_INIT_COMMAND"
fi
これで、VSCodeワークスペース設定で、次のような環境変数を設定できます。
"terminal.integrated.env.linux": {
"ZSH_INIT_COMMAND": "source dev-environment-setup.sh"
}
これで、スクリプト「dev-environment-setup.sh」がすべての新しいVSCodeターミナルウィンドウで自動的に提供されます。
素晴らしい cmder を使用している人は、settings.json
に次のようなものが必要です。
{
"terminal.integrated.Shell.windows": "cmd.exe",
"terminal.integrated.env.windows": {
"CMDER_ROOT": "C:\\path\\to\\cmder"
},
"terminal.integrated.shellArgs.windows": [
"/k",
"%CMDER_ROOT%\\vendor\\bin\\vscode_init.cmd"
],
}
次に、user_aliases.cmd
にすでに存在しているはずのエイリアスを%CMDER_ROOT%\\config\\user_aliases.cmd
ファイルに追加できます。
Linuxシステムでは、以下を使用する必要があります。
"terminal.integrated.shellArgs.linux"
WindowsおよびOSXの場合:
terminal.integrated.shellArgs.windows
そして
terminal.integrated.shellArgs.osx
それぞれ。
ワークスペースごとにshellArgs
設定を適用したい場合は、 documentation と言っているにもかかわらず、適用できます。
これらの設定のいずれかを定義するワークスペースを初めて開くと、VS Codeは警告を表示し、その後はその後常に値を無視します
少なくともバージョン1.42のVSCodeは、次のような質問をします。
「このワークスペースは
shellArgs
を設定したいのですが、許可しますか?」
Linuxでは、bash
(VSCodeのShellのデフォルト)を使用している場合、いくつかの微妙な点があります。
"terminal.integrated.shellArgs.linux": ["your_init_script.sh"]
はスクリプトを実行し、ターミナルをすぐに閉じます。これを防ぐには、スクリプトを$Shell
コマンドで終了する必要があります。#!/bin/bash
echo "init"
export PATH=$PATH:/xxx/yyy/zzz # or do whatever you want
$Shell
しかし、そうすると、サブシェルになります。時々それは受け入れられない (Read 1)(Read 2) 。"terminal.integrated.shellArgs.linux": ["--init-file", "your_init_script.sh"]
は最初のシェルのままになりますが、.bashrc
初期化ファイルは実行されません。したがって、source ~/.bashrc
内でyour_init_script.sh
することをお勧めします。#!/bin/bash
source ~/.bashrc
echo "init"
export PATH=$PATH:/xxx/yyy/zzz # or do whatever you want
some_init_script.sh
があり、何らかの理由でsource ~/.bashrc
を追加したくない場合は、次を使用できます:"terminal.integrated.shellArgs.linux": ["--init-file", "your_init_script.sh"]
your_init_script.sh:#!/bin/bash
source ~/.bashrc
source some_init_script.sh
some_init_script.sh:#!/bin/bash
echo "init"
export PATH=$PATH:/xxx/yyy/zzz # or do whatever you want
bash --init-file <(echo "source ~/.bashrc; source some_init_script.sh")
しかし、この文字列をterminal.integrated.shellArgs.linux
に渡すことができませんでした-何らかの方法で配列に分割する必要があります。そして、私が試した組み合わせはどれもうまくいきませんでした。また、特定のフォルダでターミナルを開くことができます。
terminal.integrated.cwd
環境の変更:
"terminal.integrated.env.linux"
"terminal.integrated.env.windows"
"terminal.integrated.env.osx"
そして、ターミナルをお好みに合わせて変更することもできます
terminal.integrated.Shell.linux
terminal.integrated.Shell.windows
terminal.integrated.Shell.osx
または
terminal.external.linuxExec
terminal.external.osxExec
terminal.external.windowsExec
PowerShellを使用している場合は、PowerShellスクリプトをプロファイルに追加して、必要な操作を実行できます。各開発環境には4つのプロファイルがあり、$ Profileに格納されています。
たとえば、VSCodeでプロファイルを作成します
code $profile.CurrentUserAllHosts