为什么Git Bash不能运行我的可执行文件?

79

我在git-for-windows Git Bash上。我无法在命令行上运行可执行文件:

Pedr@Abc-07 MINGW64 /c/dev
$ ls sqlite3.exe
sqlite3.exe*

Pedr@Abc-07 MINGW64 /c/dev
$ sqlite3
bash: sqlite3: command not found

为什么会这样呢?

3个回答

173
在bash中运行当前目录下的程序,需要在程序名前面加上./。所以在您的情况下:
$ ./sqlite3.exe
当您运行sqlite3时,bash会在PATH环境变量的所有目录中查找一个确切命名为该名称的程序。默认情况下,PATH包括可执行文件的标准位置(如/usr/local/bin),但不包括当前目录。有关更多信息,请参见此处

1
谢谢。我已经习惯了可以从msysgit Git bash中这样做。 - Pedro OS
真不敢相信我自己没能想到这个。我有点蠢。谢谢。 - Andy
同样适用于 Windows Subsystem for Linux 中的 Bash。 - NoName

4

这是因为您正在使用gcc的运行时环境,它支持在Windows下本地执行二进制文件,并且可以使用./来运行任何exe作为shell。

请查看该工具的文档:http://sourceforge.net/p/mingw-w64/wiki2/FAQ/


1

您的 PATH 缺少 ./。请将其添加到主目录(/c/Users/username)中的 .profile 文件中:

$ cd
$ pwd
/c/Users/username
$ echo 'PATH=$PATH:./' >> .profile

重新启动bash会话,就完成了!现在echo $PATH应该输出:./作为最后一项。请注意,您绝对需要将其添加为最后一项以确保安全性(例如,防止恶意ls.exe)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接