【问题标题】:Cygwin Bash.exe vs. mintty.exe [closed]Cygwin Bash.exe 与 mintty.exe [关闭]
【发布时间】:2014-04-12 13:43:20
【问题描述】:

我正在尝试在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有什么区别?

【问题讨论】:

  • 请说明您如何运行“in mintty”命令。

标签: windows cygwin


【解决方案1】:

这两个程序在任何方面都不能相互替代。 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 以在通过 mintty - 运行时获得更接近 bash.exe 的行为。但是,您将失去所有终端仿真器功能。例如,MinTTY 的复制粘贴行为比 Windows 的控制台要好得多,尤其是在 Windows 8 和更早版本上。

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

在 Cygwin 命令提示符下输入 man mintty 以更全面地解释 MinTTY 为您所做的所有事情。 the MinTTY manual pageINVOCATION 部分回答了这个特殊问题。

【讨论】:

  • @WarrenYoung :基本上是正确的,但是您可以要求 mintty 运行您喜欢的任何程序,在这方面,您可以说您在 mintty 中运行程序。当然,这只有在它是与 tty 交互的程序时才有意义——例如 irb 或交互式 Python 会话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
相关资源
最近更新 更多