flo*_*ien 2 powershell windows-subsystem-for-linux windows-terminal wsl-2
我正在尝试在Windows Terminal中打开WSL (Ubuntu) 选项卡,然后使用 WSL 在该选项卡中运行命令。我为此使用以下 PowerShell 命令:
wt new-tab -p "WSL (Ubuntu)" wsl echo "hallo"
Run Code Online (Sandbox Code Playgroud)
问题是,echo运行后,选项卡立即关闭。有办法让它保持打开状态吗?
当您将命令行传递给wt.exeWindows 终端 CLI 时,它会代替shell 运行,无论您是否还使用 指定特定的 shell 配置文件-p。
因此,为了实现你想要的:
虽然 PowerShell 支持此功能,但 POSIX 兼容的 shell(例如bashWSL 的默认 shell)则不支持。
A - 次优 -解决方法如下:
wt -p 'WSL (Ubuntu)' wsl -e bash -c 'echo ''hello''\; exec $BASH'
Run Code Online (Sandbox Code Playgroud)
笔记:
令人费解的是,从 Windows Terminal v1.13.11431.0 开始,;char. 引用的参数内部-c需要转义为\;- 否则它会被解释wt.exe为用于打开多个选项卡/窗口的分隔符。
上面的echo代码首先执行指定的命令,然后exec通过exec. 这种方法的局限性在于,当替换原始 shell 时,除启动命令所做的环境变量定义之外的任何状态更改都会丢失。
~/.bashrc附加启动命令,并将临时副本的文件路径传递给bashs--rcfile选项;之后删除临时副本。