运行 使用 wsl 的多个命令
Run multiple commands using wsl
我的主文件夹中有一些脚本,我想从命令行 运行,实际上是从任务计划程序,但我找不到这样做的方法。
我试过了
wsl -u Ubuntu -u jlanza "cd /home/jlanza/bin && ./myscript && ./myotherscript"
但是没用。
如何在同一会话下串联执行多个命令?
您需要在不带引号的情况下将这些命令传递给 WSL,以便 bash 将它们正确解释为一系列链接在一起的命令,而不是单个长命令。不幸的是,当您这样做时,“&&”运算符会被 Windows 命令行解释器解释,并且随后的命令不会传递给 WSL。
我发现有用的是用简单的“;”替换“&&”(运行 命令仅当前面的命令成功退出时)运算符(运行 命令,不管前面的命令是如何退出的)。那么在你的情况下,这样的事情应该有效:
cmd /c "wsl -u Ubuntu -u jlanza cd /home/jlanza/bin; ./myscript; ./myotherscript"
但是,如果您的用例需要使用“&&”运算符,我会尝试将您正在 运行ning 的命令保存为脚本或 shell 中的别名世界语言联盟。调用它可以节省您通过 Windows 命令行解释器传递 '&&' 的需要。
C:\Windows\System32\wsl.exe -d Ubuntu -u jlanza sh -c ". ~/.profile && script-jlanza.sh"
这样我就可以加载自己的配置文件,然后我就可以 运行 命令了。
选项只是 运行 sh 或任何 shell,然后在 shell 中执行您想要的命令。另一个答案也有效,但我最喜欢我的答案,因为我能够使用用户配置文件(路径、别名等)
您需要转义 && 这样 powershell 就不会将它们视为不同的命令,要将 && 传递给 wsl,请执行以下操作:
wsl -d Ubuntu -u jlanza -- cd /home/jlanza/bin `&`& ./myscript `&`& ./myotherscript
我的主文件夹中有一些脚本,我想从命令行 运行,实际上是从任务计划程序,但我找不到这样做的方法。
我试过了
wsl -u Ubuntu -u jlanza "cd /home/jlanza/bin && ./myscript && ./myotherscript"
但是没用。
如何在同一会话下串联执行多个命令?
您需要在不带引号的情况下将这些命令传递给 WSL,以便 bash 将它们正确解释为一系列链接在一起的命令,而不是单个长命令。不幸的是,当您这样做时,“&&”运算符会被 Windows 命令行解释器解释,并且随后的命令不会传递给 WSL。
我发现有用的是用简单的“;”替换“&&”(运行 命令仅当前面的命令成功退出时)运算符(运行 命令,不管前面的命令是如何退出的)。那么在你的情况下,这样的事情应该有效:
cmd /c "wsl -u Ubuntu -u jlanza cd /home/jlanza/bin; ./myscript; ./myotherscript"
但是,如果您的用例需要使用“&&”运算符,我会尝试将您正在 运行ning 的命令保存为脚本或 shell 中的别名世界语言联盟。调用它可以节省您通过 Windows 命令行解释器传递 '&&' 的需要。
C:\Windows\System32\wsl.exe -d Ubuntu -u jlanza sh -c ". ~/.profile && script-jlanza.sh"
这样我就可以加载自己的配置文件,然后我就可以 运行 命令了。
选项只是 运行 sh 或任何 shell,然后在 shell 中执行您想要的命令。另一个答案也有效,但我最喜欢我的答案,因为我能够使用用户配置文件(路径、别名等)
您需要转义 && 这样 powershell 就不会将它们视为不同的命令,要将 && 传递给 wsl,请执行以下操作:
wsl -d Ubuntu -u jlanza -- cd /home/jlanza/bin `&`& ./myscript `&`& ./myotherscript