首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我在windows 10上运行git bash中的git-gui时,我得到“第3行: exec:愿望:未找到”。

当我在windows 10上运行git bash中的git-gui时,我得到“第3行: exec:愿望:未找到”。
EN

Stack Overflow用户
提问于 2019-11-22 21:40:29
回答 2查看 2.1K关注 0票数 6

我已经在windows上使用git和git命令两年了,没有任何问题。最近,我在windows 10上安装了ubuntu,并启用了windows子系统for linx (wsl),并在ubuntu中安装了git,认为我将从那里运行git命令。从那以后,当我把git bash作为git的一部分用于窗口时,git就会很坏。

当我在git中的git bash提示符中运行git gui时,我得到

代码语言:javascript
运行
复制
C:/Program Files/Git/mingw64/libexec/git-core\git-gui: line 3: exec: wish: not found

关于上面的输出,我发现一件非常令人费解的事情是,git-gui之前的斜杠是一个“\”反斜杠,而其他的斜杠是正切斜杠,尽管它可能不相关?

我仍然可以从windows上下文菜单成功运行git gui (当我右键单击一个文件夹时)。

我尝试过的事情:

从ubuntu

  • uninstalled ubuntu

  • uninstalled git中卸载git用于windows,在restart

  • uninstalled git for windows后重新安装git,从程序文件中删除git文件夹,并在restart

  • reinstalled Git上安装tk到C驱动器(避免出现可能导致错误的“程序文件”中的空间)。

  • 向我的用户路径变量

添加了c:\Git\mingw64 64\bin

activeTCl/bin (包含wish.exe)在我的系统路径上。当我在git bash中运行“愿望-版本”时,会弹出一个小小的空窗口,愿望似乎是可以实现的,不管它是什么。以前从来不需要well或ActiveTcl来运行git命令,所以我也对此感到有点困惑!任何帮助都将不胜感激!如果git需要用于windows的话,为什么windows安装程序不安装它呢?

根据请求,下面是我在为windows安装git时使用的选项:

  • 安装到C:/Git
  • Components:✔️git Bash,✔️git Gui这里,✔️Associate .git*配置文件和默认文本编辑器,✔️Associate .sh文件将与Bash一起运行。editor.
  • Path:
  • 使用Visual代码作为Git的默认
  • ,您希望如何使用Git形成命令行?来自命令行和第三方software.
  • https传输后端的git :使用openSSL库
  • 行结束:签出windows样式,提交unix-style
  • terminal仿真器:使用MinTTY
  • 额外选项:✔️启用文件系统缓存,✔️启用Git凭据管理器,✔️启用符号链接
  • 没有选择实验内置的add -i/-p
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-28 13:33:09

我用2.24.0.windows.2版本重新安装了git,并提供了类似于问题中提到的类似选项。

我在git-bash上运行了which命令,以获得执行git-gui的路径。

代码语言:javascript
运行
复制
$ which -a git-gui
/cmd/git-gui

检查/cmd是否存在于PATH中,在git中使用echo $PATH,还是在Windows中使用echo %PATH%检查PATH中是否存在C:/Git/cmd。如果没有,则可以将其添加到PATH变量( Windows或git)中。

如果which命令产生多个路径,请检查/cmd/git-gui是否从git执行良好,并删除其他路径(注意!引用从git-gui变量中为PATH找到的多条路径。

但是,当我假设/cmd不在我的路径上时,我也会遇到同样的错误

代码语言:javascript
运行
复制
# Simulate an empty PATH variable
$ export PATH=:

# Run git-gui from git-core directory
$ C:/Git/mingw64/libexec/git-core/git-gui
C:/Git/mingw64/libexec/git-core/git-gui: line 3: exec: wish: not found

另一种情况是,git-gui存在多条路径:

代码语言:javascript
运行
复制
# Simulate PATH variable with the following directories
$ export PATH=/usr/bin:/mingw64/libexec/git-core/:/cmd

# Run git-gui
$ git-gui
/mingw64/libexec/git-core/git-gui: line 3: exec: wish: not found

# Lists the paths 
$ which -a git-gui
/mingw64/libexec/git-core/git-gui
/cmd/git-gui

注意事项which命令可用于Write the full path of COMMAND(s) to standard output.,参数-a用于Print all matches in PATH, not just the first

我在存储库上找到了一个关闭的issue。乍一看似乎与此无关,然而,在看到fix的提交消息时,它提供了一些关于您可能面临错误的背景信息。

git-gui ( Create Desktop Shortcut ):在Create Desktop Shortcut中使用git-gui.exe

当调用Repository>Create Desktop Shortcut时, GUI假设在上直接调用GUI是可以的。但是,在GitforWindows2.x的上下文中,这留下了几个关键的环境变量未初始化,导致一个无法工作的快捷方式。

为了解决这些环境变量的问题,Git附带了一个方便的git-gui.exe**,,所以让我们在它可用时使用它。

这修正了#448

签名人:约翰·辛德林

正如上面提交消息中所强调的那样,作者明确指出要使用位于git-gui.exe目录中的/cmd

最后,我建议任择议定书:

Windows和git-bash的

  • 检查包含git-gui的冲突目录,分别使用wherewhich命令(Windows PATH env传递给git-bash),
  • 模拟一个空的PATH变量,并且只向d53添加PATH变量,然后检查是否可以从git-gui从git-gui运行在Windows cmd h 259/code>H 160检查是否将目录添加到git-bash的目录中。env变量PATH正确(Windows和git 运行git-gui和git gui,git-bash中的这两个命令会产生相同的错误吗?

,我在windows上使用git和gui命令已经有两年了,没有问题。最近,我在windows 10上安装了ubuntu,并启用了windows子系统for linx (wsl),并在ubuntu中安装了git,认为我将从那里运行git命令。从那以后,当我把git bash作为git的一部分用于窗口时,git就会很坏。

为了复制这个,我

Windows10VM(Build1909,用于Windows 2.24.0.windows.2的单语言家庭Edition)

  • Install git )

代码语言:javascript
运行
复制
- Git installation location : `C:\Git` 
    - Similar options as you mention in the question except for the editor

Observations

- C:\Git\cmd被添加到Windows的PATH环境变量(因此也是git-bash )。

代码语言:javascript
运行
复制
- Both the commands `git-gui` and `git gui` work from git-bash

从微软商店(Ubuntu18.04)打开Bash on Ubuntu Windows

  • Install ubuntu应用程序的WindowsFeatureWindows Subsystem for linux( git是pre-installed)

  • Update git到最新版本,使用this

  • git works为bash和运行在2.24.0和2.24.0.windows.2 respectively

  • Both上的窗口,命令git gui和git-gui按预期从git-bash

  • Uninstalled Ubuntu运行到bash,并关闭wsl,它仍然工作

)。

进一步的debugging可以使用git的环境variables来完成。

GIT_EXEC_PATH确定Git在哪里查找它的子程序(比如git-提交、git-diff等)。您可以通过运行git --exec-path来检查当前设置。

C:/Git/mingw64/libexec/git-core

  • 在git-bash上运行此命令git --exec-path,并验证它是否显示:

GIT_TRACE控制不属于任何特定类别的一般跟踪。这包括别名的扩展,以及对其他子程序的委托.

git-gui)

  • 运行此命令GIT_TRACE=1 git gui,并显示输出(包括已解析的
  • 目录)。

如果设置了

GIT_CONFIG_NOSYSTEM,则禁用系统范围内配置文件的使用.如果您的系统配置干扰了您的命令,但是您没有权限更改或删除它,这是非常有用的。

运行此命令GIT_CONFIG_NOSYSTEM=1 git gui的

如果没有其他的工作,您可以打开一个新的发行版here

票数 3
EN

Stack Overflow用户

发布于 2019-11-22 23:21:24

因此,这太长了,不能发表评论:看一看here

那么,为什么下面的尝试不起作用呢?

高管希望"$0“"$@”

原因是某些版本的sh有一个bug。如果没有参数,这些破碎的sh将仍然将"$@“展开为单个空参数。糟了。

如果设置了sh语法${VAR+VALUE},则sh语法${ $VAR }扩展为值,而没有其他情况。我们滥用这个语法来绕过buggy的sh实现。回想一下第一个参数名为$1。如果它存在,那么我们使用"$@";否则我们什么也不做:

主管希望"$0“${1+"$@"}

我想你是在Windows上:

...\Git\mingw64\libexec\git-core。那你应该去找git-gui。如果你用编辑器打开它,它看起来就像

代码语言:javascript
运行
复制
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" -- "$@"
...

在我的案子里。

我不是这里的专家,我也不会忘记上面的链接中的细节,但是由于它只是一个简单的片段,而且您已经重新安装了所有的东西,我会试一试。

代码语言:javascript
运行
复制
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" ${1+"$@"}
...

我希望这会有所帮助,而且不会破坏任何东西;-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59002095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档