当我在Windows上使用Git Bash时,尽管它位于我的PATH变量中的文件夹中,但是如果不指定其完整路径,我将无法运行任何可执行文件。好像bash无法识别它。为什么?我可以解决吗?
当我在Windows上使用Git Bash时,尽管它位于我的PATH变量中的文件夹中,但是如果不指定其完整路径,我将无法运行任何可执行文件。好像bash无法识别它。为什么?我可以解决吗?
Answers:
得到它了。作为Windows用户,我习惯于键入不带扩展名的可执行文件名称。就我而言,我想执行一个名为的文件cup.bat
。在Windows Shell中,键入cup
就足够了。Bash不能这样工作,它需要全名。打字cup.bat
解决了问题。(虽然我无法运行该文件,因为显然bash无法理解其内容)
切换到posh-git的另一个原因。
感谢@Tom为我指出正确的方向。
alias cup=cup.bat
.bat
;该扩展名意味着Windows批处理脚本-尤其是在Windows计算机上。
也许bash看不到您的Windows路径。键入env|grep PATH
在bash,以确认哪些路径它看到的。
跟随@Daniel的评论并感谢@Tom的回答,我发现Git bash确实在使用PATH,但没有使用我最近安装的最新路径。要变通解决此问题,我在主目录(windows)中添加了一个文件,名称为:
.bashrc
内容如下:
PATH=$PATH:/c/Go/bin
因为我正在安装Go,并且此路径包含可执行文件go.exe
Now Git bash能够识别命令:
go
就我而言,也许只需重启系统就足够了,但是我很高兴在任何情况下都可以使用此解决方案。
PATH=$PATH:/c/Go/bin:/c/other/path
c:/Users/[myusername]/
这是我的主目录
在安装Git时,可以选择下面显示的选项,它将帮助您自动设置路径。
它为我解决了:)
将新值添加到PATH之后,重新启动计算机。
旧问题,但可以帮助其他人。
我已经更改了整个PATH用户的身份,之后我刚刚注销并再次登录。
这就对了!git bash
正确加载了新的PATH值。
export PATH=$NEW_PATH:$PATH
。并正常做事
我可以确认重新启动系统将确保git拾取Windows环境变量中设置的PATH,并且没有其他自动方法。
如果你git-bash
的PATH
礼物,但不是最新的,你不想重新启动,但重新生成PATH
S,你可以尝试关闭所有cmd.exe
,powershell.exe
以及git-bash.exe
从开始菜单或桌面重新打开一个窗口CMD.EXE,看看是否PATH
ENV更新。如果在系统范围内进行了更改PATH
,则还需要打开一个特权cmd窗口。
注意:此功能不适用于所有Windows版本,并且cmd.exe
在“开始菜单”或“桌面”以外的任何地方打开都可能无法正常工作,并在我的3台计算机上进行了测试,其中2台可以使用。我没有弄清楚为什么会这样,但是由于PATH
登录和注销时会自动生成环境变量,因此我不会使用变量串联来弄乱该变量。
就我而言,这是在安装heroku cli和git bash时发生的,这是我所做的工作。
到达这个位置
C:\Users\<username here>\AppData\Local
并删除我的heroku文件夹中的文件。所以我删除了文件夹并运行cmd。这是工作
编辑/添加到$ PATH变量时,请不要转义(\)特殊字符。例如,程序文件中的应用程序目录如下所示:
PATH=$PATH:/c/Program Files (x86)/random/application
不要这样做:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/
希望这可以帮助。
PATH=$PATH:/c/Program Files (x86)/random/application
...这不是用于设置PATH的正确bash语法。这会将目录临时添加/c/Program
到路径,然后尝试Files
使用arguments 运行程序(x86)/random/application
。您的“请勿执行此操作”示例的唯一错误是,当单个反斜杠正确时,它会将括号的反斜杠加倍。
对于尝试过上述所有方法(包括Windows系统环境)的用户。变量,.bashrc,.bashprofile等,并且可以在'echo $ PATH'中看到正确的路径...我可能为您提供解决方案。
使用exec 2> / dev / null抑制错误
我的脚本运行正常,但是抛出了“找不到命令”或“未找到目录”错误,尽管据我所知,这些路径是刷新的。因此,如果您抑制了这些错误(可能还必须添加'set + e'),则它将正常工作。