windows terminal 本身不直接执行启动脚本,而是通过配置 shell(如 powershell、cmd 或 wsl)的启动命令实现:powershell 修改 $profile 文件;cmd 在 settings.json 中用 commandline 配置 /k 或 /c 参数;wsl 编辑 ~/.bashrc 等配置文件;也可通过快捷方式调用 wt.exe -p "powershell" powershell.exe -noexit -command ". script.ps1" 实现统一入口。
在 windows terminal 中,它本身不直接执行“启动时运行脚本”这类逻辑,而是通过配置某个 shell(如 powershell、cmd 或 wsl)的启动命令,在该 shell 启动时自动加载并执行你的初始化脚本。关键在于:把脚本调用写进对应 shell 的配置文件或启动参数里,再让 terminal 使用这个配置。
PowerShell 启动时自动运行脚本
PowerShell 最常用方式是修改其配置文件 $PROFILE:
- 先确认配置文件路径:在 PowerShell 中运行
echo $PROFILE,通常为C:Users用户名DocumentsPowerShellMicrosoft.PowerShell_profile.ps1 - 如果文件不存在,可手动创建目录和文件:
mkdir -p $HOMEDocumentsPowerShell; New-Item $PROFILE -ItemType File - 用文本编辑器打开该文件,添加你的初始化命令,例如:
Write-Host "正在加载自定义环境..."; . D:scriptsinit.ps1 - 保存后重启 Terminal 或运行
. $PROFILE立即生效
CMD 启动时自动运行脚本
CMD 不依赖配置文件,而是靠 commandline 参数控制启动行为:
- 打开 Windows Terminal 设置(
settings.json),找到 CMD 配置文件(或新建一个) - 修改
commandline字段,例如:"commandline": "cmd.exe /k D:\scripts\init.bat" -
/k表示执行完脚本后保持窗口打开;若想执行完就退出,改用/c - 注意路径中反斜杠要双写(
\)或使用正斜杠(/)
WSL 启动时自动运行脚本
WSL 的初始化脚本一般放在 Linux 用户的 shell 配置文件中,Terminal 只负责调起 WSL:
- 对 Bash:编辑
~/.bashrc或~/.profile,末尾追加:[ -f /home/用户名/scripts/init.sh ] && source /home/用户名/scripts/init.sh - 对 Zsh:类似地修改
~/.zshrc - 确保脚本有执行权限:
chmod +x ~/scripts/init.sh - Terminal 无需额外配置,只要 WSL 配置文件未覆盖启动命令,就会自然加载
统一入口:Terminal 启动时直接运行脚本(绕过 shell 配置)
如果你希望不管用哪个 shell,只要打开 Terminal 就执行某段逻辑(比如弹出通知、检查更新),可以借助 Windows Terminal 的启动参数:
- 创建快捷方式,目标设为:
wt.exe -p "PowerShell" powershell.exe -NoExit -Command ". D:\scripts\startup.ps1" - 其中
-p "PowerShell"指定配置文件名,-NoExit防止执行完关闭窗口 - 这样每次双击该快捷方式,就等效于“打开 Terminal → 运行指定脚本”
- 不推荐设为系统默认终端启动项,因为会覆盖所有命令行工具调用场景










