为什么 Windows 11 PowerShell 或终端缺少 Linux 命令行工具?

tac*_*yon 6 terminal powershell command-line windows-11

我使用的是Windows 11。在终端中,常用的Linux命令不可用。因此,诸如chmodvim之类的命令会返回如下命令行错误:

vim : The term 'vim' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ vim ~/.bashrc
+ ~~~
    + CategoryInfo          : ObjectNotFound: (vim:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?我时隔十年才使用 Windows,请多多包涵!

Kel*_*ari 60

Windows 不是 Linux。如果不安装适用于 Linux的 Windows 子系统(WSL)、 MinGW-w64Cygwin等第三方工具或 Linux虚拟机,则 Windows 上不支持 Linux 命令或实用程序。

根据您的要求,其中一个或另一个第三方工具/套件很可能会满足您的需求。

如果您编辑问题并提供更多详细信息,我们可以为您指出最合适的解决方案。

  • 另请注意,像“chmod”这样的命令无法在 Windows 文件系统(NTFS)上正常工作,因为权限系统完全不同,因此即使您安装了其他组件,类似的命令也只会在名称上相同(同时需要完全不同的命令) args 和 options 的功能完全不同),或者根本无法运行。 (29认同)
  • @FrankThomas 有趣的是,OP 专门调用了“chmod”。我明白了“vim”,因为它是一个文本编辑器。这就是为什么我问他想做什么。 (8认同)
  • “不支持 Linux 命令”。但 Windows PowerShell 会对常见的 UNIX/Linux 命令进行别名。示例包括 `ls`、`rm`、`mv`、`pwd`、`ps`、`wget`、`man` 等。这就是混乱的来源。 (6认同)
  • @user71659:是的,并且 [Microsoft 没有记录别名](https://pvm-professionalengineering.blogspot.com/2019/10/powershell-aliases-and-missing.html),至少在 cmdlet 上没有记录别名主要文档页面。 `ls`、`dir` 和 `gci` 是 [`Get-ChildItem`](https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/Get-ChildItem) 的别名)。 `del`、`erase`、`rd`、`ri`、`rm` 和 `rmdir` 都是 [`Remove-Item`](http://technet.microsoft.com/en-us/库/hh849765.aspx)。 - (4认同)
  • cont' - `mi`、`move` 和 `mv` 是 [`Move-Item`](https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.management/Move-物品)。 `gl` 和 `pwd` 是 [`Get-Location`](https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/get-location) 的别名。 (2认同)
  • @PeterMortensen 正确。我一直认为 linux 别名有点奇怪和不合适。如果它们不支持 Linux CLI 开关,为什么要使用它们?这只会造成混乱,在 OP 案例中可能会造成这种情况。 (2认同)
  • @Keltari,他们需要别名,对于您经常输入的内容来说,输入“Get-ChildItem”太慢了。键入“ls”真是太好了。混乱只是暂时的 - 应该立即显而易见,这不是真正的 Linux 命令。尝试“Get-Alias”来查看所有这些 (2认同)

小智 10

Windows和Linux是有区别的操作系统,默认情况下不支持Linux命令或shell命令。但是您可以安装Windows Subsystem for Linux (WSL)以启用在系统上执行 Linux 命令。

需要注意的是,Windows Subsystem for Linux (WSL)仅适用于Windows 10 及更高版本。它与任何早期版本的 Windows 操作系统都不兼容。

有多种第三方工具可用于在 Windows 系统上运行 Linux 命令,例如

Git Bash
Cygwin
MSYS2
Babun
Gow
UWin
MinGW
PowerShell with Windows Compatibility Pack
Run Code Online (Sandbox Code Playgroud)

用户可以自行决定是安装 WSL 还是使用第三方应用程序在 Windows 系统上执行 Linux 命令。

您还可以使用Oracle VM VirtualBox在一台计算机上同时运行多个操作系统,而无需单独的硬件(包括 Linux)。