使用wsl运行多个命令

时间:2019-12-03 15:00:54

标签: windows-subsystem-for-linux

我的主文件夹中有一些脚本,我想从命令行运行,实际上是从任务计划程序运行,但是我找不到这样做的方法。

我尝试过

wsl -u Ubuntu -u jlanza "cd /home/jlanza/bin && ./myscript && ./myotherscript"

但它不起作用。

如何在同一会话中合并多个命令的执行?

3 个答案:

答案 0 :(得分:1)

您需要将这些命令传递给WSL而不带引号,以便bash正确地将它们解释为一系列链接在一​​起的命令,而不是单个长命令。不幸的是,当您这样做时,Windows命令行解释器会解释'&&'运算符,并且以下命令不会传递给WSL。

我发现可以用简单的';'代替'&&'(仅当前面的命令成功退出时才运行命令)。 (无论前面的命令如何退出,都运行命令)。那么您的情况应该是这样的:

cmd /c "wsl -u Ubuntu -u jlanza cd /home/jlanza/bin; ./myscript; ./myotherscript"

但是,如果您的用例需要使用'&&'运算符,那么我将尝试将正在运行的命令保存为WSL中的脚本或shell别名。调用该命令将节省您通过Windows命令行解释器传递“ &&”的需要。

答案 1 :(得分:0)

C:\Windows\System32\wsl.exe -d Ubuntu -u jlanza sh -c ". ~/.profile && script-jlanza.sh"

这样,我可以加载自己的配置文件,然后运行命令。

该选项仅用于运行sh或任何shell,然后在该shell中执行您想要的命令。另一个答案也是有效的,但是我最喜欢我的,因为我可以使用用户个人资料(路径,别名等)

答案 2 :(得分:0)

您需要转义&&,以便powershell不会将它们视为不同的命令,要将&&传递给wsl,请执行以下操作: wsl -d Ubuntu -u jlanza -- cd /home/jlanza/bin `&`& ./myscript `&`& ./myotherscript