gpt4 book ai didi

powershell - Windows powershell 中无法识别命令 "docker"

转载 作者:行者123 更新时间:2023-12-02 19:44:56 34 4
gpt4 key购买 nike

我正在使用 Windows Powershell(在 Windows 10 上)。我也在使用 docker desktop 的最新版本 2.3.0.5。当我在 powershell 中键入“docker version”时,无法识别该命令。错误消息显示为“Der angegebenen Datei ist keine Anwendung zugeordnet”。 (英语:没有应用程序分配给指定的文件)。当我改为包含文件扩展名并键入“docker.exe 版本”时,可以执行命令。有趣的是,“docker 版本”在 cmd 窗口中工作,但由于某种原因不在 powershell 中。扩展名“.exe”包含在 Windows 环境变量 PATHEXT 中。
它在powershell中不起作用的原因可能是什么?
PS:我之前安装了旧版本的docker。那里一切正常。然后我更新到最新版本。在那之后,我不能再使用我现有的 docker 容器了。所以我卸载了旧版本,安装了2.3.0.5版本。从那以后我就有了这个问题。

最佳答案

tl;博士:

  • 运行Get-Command -All docker | ForEach-Object Path
  • 在返回的文件路径中,删除那些不以 *.exe 结尾的路径。 (使用 Remove-Item )。

  • 最可能的解释是,在 系统路径 ( $env:PATH ) 中的目录之一,位于 docker.exe 之前的目录之一位于,包含另一个文件,其基本名称为 docker :
  • 任一个 : 是一个没有扩展名的文件,完全命名为 docker [这就是问题所在]。
  • PowerShell 意外地尝试执行这个无扩展名的文件,因为它认为它是可执行的,尽管 - 根据定义 - 没有通过 PATHEXT 指定为可执行的扩展名。环境变量($env:PATHEXT)。[1]
  • 这可以解释 cmd.exe的不同行为,因为它明智地从不考虑无扩展名的文件可执行文件。

  • 想必是老Docker版本的卸载去掉了原来的docker.exe ,但留下了一个无扩展名 docker后面同一目录中的文件(可能是 Unix shell 脚本)。

  • :它确实有一个扩展名(*.exe 除外),其中:
  • 指的是一个不能直接执行的文件,需要一个解释器——一个单独的可执行文件——才能被执行
  • 并且该扩展名列在 PATHEXT 中环境变量
  • 并且文件扩展名(例如 .py )和相关解释器(有关的信息)之间的关联(现在)丢失了,可能是由于卸载了较旧的 Docker 版本。


  • [1] 事实上, PowerShell 意外认为任何文件扩展名可执行 - 见 GitHub issue #12632 .
    但是, 对于那些未在 PATHEXT 中列出的扩展,仅当您在仅文件名调用 中包含文件扩展名时,通过路径执行才有效(例如,执行 file.txt 以该名称打开一个文件,该文件位于关联编辑器中具有此类文件的路径中的第一个文件夹中)。对于无扩展名的文件,显然没有要包含的扩展名,这就是为什么与 *.exe 混淆的原因。相同基本名称的文件是可能的(除非您使用 .exe 调用);如果这两个文件位于路径中的同一目录中, *.exe文件优先,但如果无扩展名文件位于路径中前面列出的不同目录中,则优先。

    关于powershell - Windows powershell 中无法识别命令 "docker",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63980371/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com