我想bash
从批处理文件在 Windows 终端内启动 Ubuntu WSL [shell: ] 并传递一个命令,该命令应在启动后立即运行。
- 直接启动 WSL 时,我可以使用
-c
参数执行此操作;例如,以下操作打开 WSL 并与一些本地端口转发建立 SSH 连接:bash -c "ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]"
我如何使用 Windows 终端实现这一点?
答案1
我找到了两种方法,目前都有效:
- 创建专用配置文件:
该commandline
选项还接受参数,这些参数在启动时直接传递给 shell,允许直接使用wsl.exe
附加的“启动命令”:
我现在可以通过批处理文件启动 shell,该文件使用下面的命令运行;但是,缺点是新的配置文件显示在 Windows 终端的配置文件选择菜单:{ "guid": "{...}", "hidden": false, "name": "Ubuntu SSH", "commandline": "wsl.exe ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]", }
wt -p "Ubuntu SSH"
- 传递
commandline
给wt
:
如选项 1 所示,该commandline
选项可以包含目标 shell 的更多参数,从批处理文件调用时可进行以下工作:
我没有找到任何官方的在线资源来解释为什么这样做有效,调整建议这个答案,所以我不确定这是否应该以这种方式工作,或者它是否是一个可能在未来版本中破坏的隐藏/无意的功能。wt wsl.exe ssh -L 3306:localhost:3306 -L 5900:localhost:5900 -L 8001:localhost:8001 [email protected]
答案2
错误信息是正确的:Windows Terminal 没有参数-c
。
这句法是:
wt [options] [command ; ]
唯一的选择是:
-h,--help Print this help message and exit
-v,--version Display the application version
-M,--maximized Excludes: --fullscreen
Launch the window maximized
-F,--fullscreen Excludes: --maximized
Launch the window in fullscreen mode
-p Profile
-d Directory