如何修改Bash脚本以在WSL 2中打开指定目录的多终端标签页
如何修改Bash脚本以在WSL 2中打开指定目录的多终端标签页
嗨,这个问题我之前也碰到过!WSL 2本身并没有预装GNOME终端,所以你原来的脚本里gnome-terminal命令找不到是很正常的事儿。咱们可以换用Windows Terminal(现在Win10/11默认自带,没有的话去微软商店安装就行)来实现需求,它对WSL的支持非常友好,操作起来也更顺手。
方案一:使用Windows Terminal(推荐)
Windows Terminal提供了命令行启动参数,可以直接新建WSL标签页并指定工作目录,具体脚本修改如下:
#!/bin/bash # 新建标签页并进入WSL的folder1目录 wt --tab wsl -- cd /home/$USER/folder1 # 再新建一个标签页并进入WSL的folder2目录 wt --tab wsl -- cd /home/$USER/folder2
简单解释一下这段脚本:
wt是Windows Terminal的命令行启动器,直接在WSL的bash里就能调用;--tab表示要新建一个终端标签页;wsl指定这个标签页启动WSL会话;- 后面的
cd /home/$USER/folder1是WSL会话启动后自动执行的命令,执行完后会自动停留在该目录的交互shell中。
如果你的Windows Terminal版本较旧,可能需要把--tab换成new-tab,不过现在新版都支持--tab参数啦。
方案二:使用WSL内的Linux终端(适合习惯原生Linux终端的用户)
如果你一定要用Linux原生的终端工具(比如xfce4-terminal),需要先在WSL里安装桌面环境和终端,步骤稍繁琐:
- 首先安装xfce4桌面环境和终端:
sudo apt update && sudo apt install xfce4 xfce4-terminal -y - 在Windows上安装X服务器(比如VcXsrv、X410),启动时记得勾选“Disable access control”;
- 在WSL的bash里设置DISPLAY环境变量(可以加到
~/.bashrc里永久生效):export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0 - 最后修改你的脚本为:
#!/bin/bash xfce4-terminal --tab -- bash -c "cd /home/$USER/folder1; exec bash" xfce4-terminal --tab -- bash -c "cd /home/$USER/folder2; exec bash"
不过这种方法需要每次启动X服务器,日常使用不如Windows Terminal方便,所以更推荐第一种方案。
备注:内容来源于stack exchange,提问作者splunk
相关产品推荐
相关产品推荐

