我想将 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'
…