我想通过运行 Ubuntu 20 的 WSL 自动为 Linux 编译我的程序,以便我可以设置一个 IDE 任务 Windows 端,它将在 Linux 上为我进行编译。我想制作一个 win32 应用程序来启动 Ubuntu 可执行文件并将命令发送到它的标准输入,就像我手动输入它们一样,但由于 Ubuntu 是 UWP,我认为这是不可能的?自动化脚本的参数将是主源文件目录的路径、主源文件名以及 1 到 4-5 个其他开关的任何位置。我希望自动化是沉默的。自动命令示例:
cd /mnt/<provided path>
compiler -switch1 -switch2 -switch3 -out <provided executable file name> <provided source file name>
由于 .bashrc 中设置了环境变量,因此可以从任何地方访问编译器。
老实说,bash.exe
在意识到它是推荐的(过时的)之前,我过快地扫描了答案后对答案进行了投票bash.exe
。因此,我将提供我希望的“更好的答案”。
请注意,bash.exe
Microsoft 将其列为“历史命令”,在我看来,这仅比“已弃用”高出一步。
当前推荐的启动 WSL 实例的方法是使用wsl.exe
命令(或仅wsl
在从 PowerShell、CMD 或任一解释器下的脚本调用时)。例如(使用bash.exe
上一个问题的示例):
给定一个文件/mnt/c/Temp/your_script.sh
(当然设置为可执行文件),其中包含:
#!/usr/bin/env bash
echo Hello
cd /home
pwd
然后wsl -e "/mnt/c/Temp/your_script.sh"
(在 PowerShell 中)将执行该文件并导致:
Hello
/home
wsl的-e
(也--exec
)参数将其后的任何命令作为默认 shell 运行。所以wsl -e ls
会在不调用bash
(甚至不调用sh
)的情况下进行目录列表。
该家当-IN-A-脚本方法是运行命令的一种方式中 bash
,但你也可以调用命令(或命令),如:
wsl -e bash -c "echo Hello; cd /home; pwd"
但是,请注意:
echo "echo Hello; cd /home; pwd" | wsl
将不工作,至少在PowerShell中,因为PowerShell有追加回车(恼人的“特征” \r
)到任何输出管道输送到控制台可执行文件如wsl.exe
。
除其他功能外,wsl.exe
还可以:
wsl -d kali
)wsl -u root visudo
)本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句