如何在 Windows 10 上从 Bash Shell 外部运行 Linux 命令

Windows 10 包括一个底层的“Windows Linux 子系统”来运行 Linux 应用程序,但它只能通过 Bash shell 访问。但是,有一种方法可以在不首先启动 Bash 窗口的情况下运行 Linux 应用程序。
这要归功于 bash -c
命令。使用它通过命令提示符和 PowerShell 运行 Linux 命令,甚至可以创建桌面快捷方式以在启动时运行 Linux 命令或程序。
更新:如果安装了多个Linux环境,可以使用wslconfig命令选择默认的Linux环境。还有一种方法可以在特定的 Linux 环境中运行命令。
如何在命令提示符或 PowerShell 中运行 Linux 命令
在你做任何这些之前,你需要安装和设置 Windows 10 的 Bash shell。完成后,您可以打开命令提示符窗口并运行以下命令以在 Bash 窗口外运行 Linux 软件:
bash -c "command"
例如,假设您想通过 apt-get 安装 emacs 包。您将在命令提示符窗口中运行以下命令:
bash -c "sudo apt-get install emacs"
当您使用 bash -c 时,Windows 将在后台启动 Bash shell 并将命令传递给它。该命令将运行直到完成,然后与 Bash shell 一起退出。当前命令运行的任何终端输出都将直接出现在命令提示符窗口中,而不是单独的 Bash shell 窗口中。

这个技巧还允许您在 PowerShell 中运行 Linux 命令,就像您运行普通的 Windows 可执行文件一样。您可以像在命令提示符窗口中那样直接运行 .exe 文件,或者通过任何其他在 PowerShell 中运行可执行文件的方法来执行此操作。
bash -c "uname -a"
与命令提示符窗口一样,命令的输出将直接出现在 PowerShell 中。这些方法也可用于将 Linux 命令添加到批处理文件或 PowerShell 脚本中。

如何从运行对话框或开始菜单运行 Linux 命令
此技巧也适用于从“运行”对话框、“开始”菜单或任何第三方应用程序启动器运行命令。
例如,要从“运行”对话框启动 vi,您需要按键盘上的 Windows+R,然后运行以下命令:
bach -c "vi"
vi 文本编辑器将出现在它自己的窗口中。

这也适用于“开始”菜单,因此您可以直接在“开始”菜单中键入相同的命令,然后按 Enter 键将其作为命令运行。

如何使用桌面快捷方式运行 Linux 命令
bash -c
命令还可以通过桌面快捷方式启动 Linux 应用程序。例如,假设您想通过桌面快捷方式启动 vi 文本编辑器。您可以右键单击桌面,指向新建 > 新建快捷方式,然后输入以下目标:
bash -c "vi"
您现在可以保存快捷方式,当您双击它时它将启动 vi。

有趣的是,这个技巧也适用于从桌面快捷方式启动图形化 Linux 应用程序。安装 X 服务器并设置图形化 Linux 桌面应用程序。您应该能够创建快捷方式以直接启动它们。
但是,您必须像这样启动它们:
bash -c "DISPLAY=:0 command"
虽然您可以从 Windows 的其他地方启动 Bash 命令,但无法直接从 Bash shell 窗口运行 Windows 软件或可执行文件。