Windows 中 git-bash.exe 和 sh.exe 有什么区别?

Windows 中 git-bash.exe 和 sh.exe 有什么区别?

我想将 git bash 集成到 IntelliJ 中,所以我将默认终端路径更改为C:\Program Files\Git\bin\sh.exe。一段时间后,我注意到某些命令不起作用,例如:

sh.exe

$ ll                                                                                                                    
bash: ll: command not found

另外有些程序无法运行。我正在使用MQTT 命令行,下载了它,PATH正确配置了变量,但该命令mqtt仅在中有效git-bash.exe

sh.exe

$ mqtt
bash: mqtt: command not found

git-bash.exe

$ mqtt

Usage:  mqtt [-hV] { pub | sub | shell }

MQTT Command Line Interpreter.

Options:
  -h, --help      Show this help message and exit.
  -V, --version   Print version information and exit.

Commands:
  pub, publish    Publish a message to a list of topics
  sub, subscribe  Subscribe an mqtt client to a list of topics
  shell, sh       Starts MqttCLI in shell mode, to enable interactive mode with further sub commands.

答案1

sh 是受限制的 shell,只能用于 Git 操作。文档描述如下:

这是 SSH 帐户的登录 shell,用于提供受限的 Git 访问。它仅允许执行实现拉/推功能的服务器端 Git 命令,以及用户主目录中名为 git-shell-commands 的子目录中的自定义命令。

当您只想进行一些 Git 工作时,此 shell 有助于防止您意外运行危险的脚本。

另一方面,Bash 是一个完整的类似 Linux 的命令环境,您可以在其中运行任何已安装的软件,包括 Windows CLI 工具和专门构建的 bash 可执行文件和脚本。

答案2

git-bash 是一个嵌入式系统,包含运行 git 所需的所有东西和库,甚至更多,包括 bash。

bash/sh 只是 shell 指挥官。

在您的情况下, ll 是一个别名。

在 git bash 中(包括 grep)

$ alias | grep ls
alias ll='ls -l'
alias ls='ls --color=auto'

相关内容