如何从现有的 WSL bash window 启动新的 WSL bash window
How to launch a new WSL bash window from an existing WSL bash window
我正在努力弄清楚如何通过 WSL 中的 bash 命令启动新的 "command prompt" window。目标是启动第二个提示,最好已经在 bash.
我已经尝试过 运行 cmd.exe
但这只是让我从 bash shell 中进入标准 windows 命令提示符 cmd。
https://i.imgur.com/tIdRMvR.png
运行 bash.exe
或 wsl.exe
命令只是将我从同一个 bash [=42] 中带到另一个 bash shell =].
https://i.imgur.com/OM1XTlG.png
我正在为 WSL 使用 Debian 发行版,尽管这无关紧要。
我知道您可以在标准命令提示符下创建一个新的 window,方法是将 start
命令放在程序之前。但是我找不到 *nix 等效项或如何从 WSL 中调用执行相同操作的 bash 命令。
从 WSL 启动新 window 的唯一方法是使用某种终端仿真器并启动它。有许多不同的选项:wsltty, wsl-terminal, Conemu, and Cmder (which is based upon Conemu) all come to mind offhand. Wsltty is based upon mintty which is the default terminal emulator for Cygwin,这是人们在 WSL 出现之前使用的选项。我个人喜欢 Cmder,但我发现设置起来很痛苦。 YMMV.
这适用于 WSL 中的 bash 提示。
cmd.exe /c start cmd.exe /c wsl.exe
(找到解决方案 here)
如果你想打开某个发行版,那就更好了
转到资源管理器类型 shell:AppsFolder
找到你的发行版创建桌面快捷方式
并在你的 wsl
中执行此操作
$ cmd.exe /c <absolute path of that shortcut>
例如:
$ cmd.exe /c "C:\Users\fake user which i just made up\Desktop\Ubuntu.lnk"
您还可以将快捷方式复制到某个地方并使用绝对路径,而不仅仅是发行版名称您可能需要使用 ""
包含路径
编辑:如果您发现自己遇到此错误 CMD.EXE was started with the above path as the current directory.UNC paths are not supported
我找不到任何解决方案,您可以使用 this docs to cmd.exe params
不需要两次调用cmd。我用的是这种东西:
cmd.exe /c start wsl.exe -d $WSL_DISTRO_NAME --user $LOGNAME -- ssh -p 23 -L 80:10.0.0.1:80 -L 443:10.0.0.1:443 username@remoteserver
这将为同一个用户和调用方 window 的分布打开另一个 wsl window 并在其中启动 ssh 会话。
在新的 window 中,ssh 会话可以替换为任何你想要的 运行 ... 如果你只想要 shell 提示符,则在 $LOGNAME
之后省略所有内容
(请注意,如果您还没有它,则需要 install Windows Terminal 才能使此解决方案起作用)。
所以 none 这些答案确实对我有用。结果对我来说最好的解决方案是使用 cmd.exe 通过 windows 终端(wt.exe)打开 bash,即:
cmd.exe /c "wt.exe" -p "Debian"
使用 -p 指示您的 command-line 应用程序的配置文件名称,或保留它以使用默认值。
您可以使用它在新选项卡中打开并传递命令:
cmd.exe /c "wt.exe" -w 0 nt -p "Debian" python example.py
我正在努力弄清楚如何通过 WSL 中的 bash 命令启动新的 "command prompt" window。目标是启动第二个提示,最好已经在 bash.
我已经尝试过 运行 cmd.exe
但这只是让我从 bash shell 中进入标准 windows 命令提示符 cmd。
https://i.imgur.com/tIdRMvR.png
运行 bash.exe
或 wsl.exe
命令只是将我从同一个 bash [=42] 中带到另一个 bash shell =].
https://i.imgur.com/OM1XTlG.png
我正在为 WSL 使用 Debian 发行版,尽管这无关紧要。
我知道您可以在标准命令提示符下创建一个新的 window,方法是将 start
命令放在程序之前。但是我找不到 *nix 等效项或如何从 WSL 中调用执行相同操作的 bash 命令。
从 WSL 启动新 window 的唯一方法是使用某种终端仿真器并启动它。有许多不同的选项:wsltty, wsl-terminal, Conemu, and Cmder (which is based upon Conemu) all come to mind offhand. Wsltty is based upon mintty which is the default terminal emulator for Cygwin,这是人们在 WSL 出现之前使用的选项。我个人喜欢 Cmder,但我发现设置起来很痛苦。 YMMV.
这适用于 WSL 中的 bash 提示。
cmd.exe /c start cmd.exe /c wsl.exe
(找到解决方案 here)
如果你想打开某个发行版,那就更好了
转到资源管理器类型 shell:AppsFolder
找到你的发行版创建桌面快捷方式
并在你的 wsl
$ cmd.exe /c <absolute path of that shortcut>
例如:
$ cmd.exe /c "C:\Users\fake user which i just made up\Desktop\Ubuntu.lnk"
您还可以将快捷方式复制到某个地方并使用绝对路径,而不仅仅是发行版名称您可能需要使用 ""
包含路径
编辑:如果您发现自己遇到此错误 CMD.EXE was started with the above path as the current directory.UNC paths are not supported
我找不到任何解决方案,您可以使用 this docs to cmd.exe params
不需要两次调用cmd。我用的是这种东西:
cmd.exe /c start wsl.exe -d $WSL_DISTRO_NAME --user $LOGNAME -- ssh -p 23 -L 80:10.0.0.1:80 -L 443:10.0.0.1:443 username@remoteserver
这将为同一个用户和调用方 window 的分布打开另一个 wsl window 并在其中启动 ssh 会话。 在新的 window 中,ssh 会话可以替换为任何你想要的 运行 ... 如果你只想要 shell 提示符,则在 $LOGNAME
之后省略所有内容(请注意,如果您还没有它,则需要 install Windows Terminal 才能使此解决方案起作用)。
所以 none 这些答案确实对我有用。结果对我来说最好的解决方案是使用 cmd.exe 通过 windows 终端(wt.exe)打开 bash,即:
cmd.exe /c "wt.exe" -p "Debian"
使用 -p 指示您的 command-line 应用程序的配置文件名称,或保留它以使用默认值。
您可以使用它在新选项卡中打开并传递命令:
cmd.exe /c "wt.exe" -w 0 nt -p "Debian" python example.py