cygwin:vagrant ssh,空命令提示符

cygwin: vagrant ssh, empty command prompt

如果我 vagrant ssh 使用 windows cmd,我会得到一个很好的命令提示符,就像这样:

vagrant@homestead:~$ echo foo
vagrant@homestead:~$ foo

但是对于cygwin和mintty,我根本没有提示:

echo foo
foo

我看到它与 "pseudo-tty allocation" 有关。

使用 cygwin 和 mintty,我可以得到我的提示:

vagrant ssh -- -t -t

如何更改 cygwin 和 mintty 以便我不必告诉 -t

关于 ssh -t 选项:

"Force pseudo-tty allocation. This can be used to execute arbi- 在远程机器上运行基于屏幕的程序,可以是 非常有用,例如,在实现菜单服务时。多重-t 选项强制分配 tty,即使 ssh 没有本地 tty。"

Vagrant 是一个 windows 管理虚拟机的程序
https://www.vagrantup.com/intro/index.html

因此它不能很好地与伪 tty 交互 cygwin 程序使用的结构。 阅读有关许多其他 windows 程序
的类似问题的参考 https://github.com/mintty/mintty/issues/56

Mintty 是一个 Cygwin 程序。它期望其中的交互式程序 运行ning 使用 cygwin tty 功能进行交互行为。 运行 Vagrant 来自 Bash in Windows CMD,将 CMD 设置为终端控件,这样 Vagrant 在交互行为中就没有问题了。

我认为不需要 运行 Cygwin 中的 Vagrant

我运行遇到了上面描述的同样的问题。但仅在三台 PC 中的一台上。但作为一种解决方法,我正在做:

# save the config to a file
vagrant ssh-config > vagrant-ssh

# run ssh with the file.
ssh -F vagrant-ssh default

来自How to ssh to vagrant without actually running "vagrant ssh"?

的回答

在这种情况下,我得到了提示,更重要的是历史记录循环和 ctrl-c 等都正常工作。

我遇到了同样的问题,解决方案是设置 VAGRANT_PREFER_SYSTEM_BIN 环境变量让 vagrant 使用你的普通 ssh 可执行文件。

你可以这样做:

VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh

或将其放入您的 .bash_profile:

export VAGRANT_PREFER_SYSTEM_BIN=1

参考:https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263

因为 vagrant 是基于 windows 的,所以我使用 ConEmu 而不是 cygwin 的 shell (mintty)

choco install conemu 通过 chocolatey 成功了

一般解决方案是教vagrant使用ssh,与首选终端兼容。喜欢 Cygwin ssh+mintty.

Modern Vagrant (v2.1.2) 默认在 Windows 上有 VAGRANT_PREFER_SYSTEM_BIN=1

解决问题:

VAGRANT_LOG=info vagrant ssh

In v2.1.2 they broke Cygwin support。请参阅我的错误报告并修改 lib/vagrant/util/ssh.rb 以使其正常工作。