适用于 Windows 的 Git:Git\bin\bash.exe 和 Git\usr\bin\bash.exe 之间的区别
Posted
技术标签:
【中文标题】适用于 Windows 的 Git:Git\\bin\\bash.exe 和 Git\\usr\\bin\\bash.exe 之间的区别【英文标题】:Git for Windows: Difference between Git\bin\bash.exe and Git\usr\bin\bash.exe适用于 Windows 的 Git:Git\bin\bash.exe 和 Git\usr\bin\bash.exe 之间的区别 【发布时间】:2019-01-14 17:17:51 【问题描述】:据我了解 bin\bash.exe 调用 usr\bin\bash.exe 我猜想有一些选项可以帮助管理 Windows 路径,但找不到任何文档来表明这一点。
我所知道的是,如果我将环境设置为使用 Git\usr\bin\
而不是 Git\bin
,我的脚本似乎无法按预期工作。
一个新的开发盒似乎有这样的设置:
在哪里狂欢
C:\Windows\System32\bash.exe
C:\Program Files\Git\usr\bin\bash.exe
如果bin/bash.exe
是我应该使用的,我可以理解 wsl 是***但无法理解第二个条目?
【问题讨论】:
有什么用途?一般? In the install path of Git for Windows, what's the difference between ./git-bash.exe and bin/bash.exe and bin/sh.exe?的可能重复 【参考方案1】:%windir%\system32\bash.exe
= 内联 bash shell 由您使用 microsoft store 启用的任何适用于 linux [ wsl ] 环境的 windows 子系统托管 | linux的windows子系统| |安装。另一种但与启动菜单快捷方式%windir%\system32\wsl.exe ~ -d Ubuntu
启动的单独窗口基本相同的结果。
%programfiles%\git\bin\bash.exe
-> %programfiles%\git\usr\bin\bash.exe + some automatically injected arguments
= inline [ main stdin/stdout ] git 提供的 bash shell 位于 windows cmd.exe 命令提示符环境之上
%programfiles%\git\git-bash.exe
= windows app [ winmain ] 由 git 提供的 bash shell 位于 windows cmd.exe 命令提示符环境之上
【讨论】:
感谢您的回复!正如我提到的,我的脚本似乎只有在我使用时才有效:“C:\Program Files\Git\bin\bash.exe” - 所以我想我需要了解这些“+一些自动注入的参数”是什么......是这记录在任何地方?确实查看了 git-for-windows github,但什么也没看到。 我不知道。我跑了%programfiles%\Git\bin\bash.exe
,然后在进程详细信息下查看了命令行,我看到它产生了一个%programfiles%\Git\bin\..\usr\bin\bash.exe
,没有任何命令行参数,所以我看到的文档中提到“+一些自动注入的参数”可能是指内部该 exe 中定义的参数给出了 1918KB 与 bin\bash.exe 为 44KB。
在我的系统上尝试运行%programfiles%\Git\usr\bin\bash.exe
直接产生输出bash: cut: command not found
并尝试使用printenv
,以比较以这种方式启动与使用Git\bin\bash.exe
的环境差异,产生bash: printenv: command not found
.
运行替代%programfiles%\Git\bin\git-bash.exe
我看到它产生usr\bin\mintty.exe --nodaemon -o AppID=GitForWindows.Bash -o AppLaunchCmd="%programfiles%\Git\git-bash.exe" -o AppName="Git Bash" -i "%programfiles%\Git\git-bash.exe" --store-taskbar-properties -- /usr/bin/bash --login -i
来设置新的命令窗口,然后是%programfiles%\Git\usr\bin\bash.exe
。
layered on top of windows cmd.exe command prompt environment
是吗?它在mintty.exe
之上运行bash.exe
,但它是否还涉及cmd.exe
?【参考方案2】:
看来:
"C:\Program Files\Git\usr\bin\bash" -li
产量:
Me@MYPC MSYS /usr/bin
和
"C:\Program Files\Git\bin\bash" -li
产量:
Me@MYPC MINGW64 /usr/bin
所以在我看来,这意味着 EXE 的编译方式不同。
但就我而言,我的脚本遇到的问题完全取决于每个 exe 设置的 PATH:
对于
"C:\Program Files\Git\usr\bin\bash.exe"
$ where FIND
C:\Windows\System32\find.exe
C:\Program Files\Git\usr\bin\find.exe
鉴于:
"C:\Program Files\Git\bin\bash.exe"
$ where FIND
C:\Program Files\Git\usr\bin\find.exe
C:\Windows\System32\find.exe
所以我在前一种情况下的脚本失败了
FIND: Parameter format not correct
因为它没有找到正确的 find 版本。
【讨论】:
以上是关于适用于 Windows 的 Git:Git\bin\bash.exe 和 Git\usr\bin\bash.exe 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Windows 的 Git 不执行我的 .bashrc 文件
Git:使用适用于 Windows 的 GitHub 客户端在 PATH 中安装 Git