windows - Cygwin Bash.exe 与 mintty.exe

标签 windows cygwin

<分区>

我正在尝试在 cygwin64/bin 中的 bash.exemintty.exe 上运行 Unix 命令(例如, usr/bin/bash.exe)。当我尝试运行 Unix 命令 ls 时,我得到了 bash: ls: command not found。但是,当我单击 Cygwin 终端的桌面图标,并在生成的 Cygwin 终端中输入 ls 时,ls 等 Unix 命令起作用了!为什么 Unix 命令在 bash.exemintty.exe 上不起作用,但在终端上单击图标的结果?另外,bash.exemintty.exe带来的两个shell有什么区别?

最佳答案

这两个程序在任何方面都不是彼此的替代品。 Bash 是一个 shell , 而 MinTTY 是一个 terminal emulator . MinTTY 通常在自身内部运行用户的 shell,它可能是也可能不是 Bash。您通常会同时使用这两个程序。

如果您检查 Cygwin 的 setup.exe 构建的 MinTTY 快捷方式,您会发现它不是程序的简单启动。它以 mintty - 运行它,它告诉 MinTTY 将用户的 shell 作为“登录”shell 运行。

这是您遇到的问题。如果你在没有选项的情况下运行 bash.exe,你只会得到裸壳,它的默认配置,这意味着它不会做一些事情,比如将 Cygwin /bin 添加到你的PATH .同样,如果您在没有选项的情况下运行 mintty.exe,它会在没有选项的情况下运行您的用户的 shell。当您给 mintty.exe 一个破折号而不是程序名称时,它会将您的用户的 shell 作为登录 shell 运行:bash -l,而不仅仅是 bash 。该选项会导致 Bash 在启动后立即读取一堆启动脚本,这会设置命令 PATH 以及其他更多内容。

因此,如果您出于某种原因必须在 MinTTY 之外运行 bash.exe,您可以说 bash -l 以获得更接近 的行为bash.exe 当通过 mintty - 运行时。但是,您会失去所有终端仿真器功能。例如,MinTTY 的复制粘贴行为比 Windows 的控制台好得多,尤其是在 Windows 8 及更早版本上。

(Windows 10 的初始版本包括 a much-improved console,最近的 Windows Terminal 附加组件进一步改进,但 MinTTY 仍然是更强大的选项,恕我直言,尤其是在使用 Cygwin 时。)

在 Cygwin 命令提示符下输入 man mintty 以获得 MinTTY 为您所做的所有事情的更完整解释。 the MinTTY manual pageINVOCATION 部分回答了这个特定问题。 .

关于windows - Cygwin Bash.exe 与 mintty.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031164/

相关文章:

node.js - Cygwin 路径错误 : Cannot find module 'C:\cygdrive\c\...'

cygwin - 如何在cygwin中包含头文件

Python 识别 cygwin 上的 UNC 路径

c++ - OpenCV - 我如何开始?

regex - Windows CMD FINDSTR 错误的正则表达式匹配

c++ - 在 OS/X(或 Windows)中检测启动期间按住的修改键?

c++ - vc++ 编译错误 RC : fatal error RC1107: invalid usage; use RC/? for

r - 在 WIndows 上构建/检查 R 包时出现权限被拒绝错误

cygwin - Tesseract 运行时错误 : Error in pixReadMemPng: function not present

linux - Cygwin bash 文件