我想通过 Windows 中的单击批处理文件来自动化 Ubuntu。
我可以只执行start ubuntu
,但如果我添加/k cd "path"
,它就不会执行任何操作。它会退出且没有任何错误。
我想做一个自动化,以便我可以单击 Windows 中的批处理文件并:
- 在 WSL 中打开 Ubuntu
- cd 到路径
- 激活环境
cargo run
- ...然后让 Ubuntu 在同一个实例中运行
...但 WSL 的表现似乎并不像我预期的那样。我不明白。
这个问题真的很接近,但是我尝试过了,却无法让它工作。
答案1
本质上,这听起来就像您想在 WSL/Ubuntu 中编写一系列命令,但在完成后保持 shell 保持打开状态。
关键步骤如下:
- 使用
wsl
命令,而不是ubuntu.exe
命令。 - 启动您要在其中运行命令的 shell
-lic
,这将使其成为登录 shell(用于解析您的~/.bash_profile
)和交互式 shell(用于解析您的~/.bashrc
)。 - 用分号分隔参数中的命令
wsl
。 - 为了保持 shell 运行,请执行最后一条命令
exec bash
例如:
wsl -e bash -lic "cd /home/myhome/src/project ; source /home/myhome/src/myproject/bin/activate ; cargo run ; exec bash"