cygwin:vagrant ssh,空命令提示符

时间:2017-07-06 17:13:04

标签: vagrant cygwin

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

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

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

echo foo
foo

我认为它与“伪tty分配”有关。

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

vagrant ssh -- -t -t

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

关于ssh -t选项:

“强制伪tty分配。这可用于执行arbi-              在远程机器上运行基于屏幕的程序,可以              非常有用,例如,在实现菜单服务时。多个-t              选项强制tty分配,即使ssh没有本地tty。“

5 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,解决方法是设置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

答案 1 :(得分:2)

我遇到了上述相同的问题。但只能在三台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等正常工作。

答案 2 :(得分:1)

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

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

Mintty是一个Cygwin程序。它期望在其中运行的交互式程序使用cygwin tty功能来实现交互行为。 在Windows CMD中从Bash运行Vagrant,使CMD成为终端控件,因此Vagrant在交互行为方面没有问题。

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

答案 3 :(得分:0)

由于vagrant是基于windows的,我使用ConEmu而不是cygwin的shell(mintty)

choco install conemu通过chocolatey并且有效

答案 4 :(得分:0)

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

现代游民(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进行破解的错误报告,以使其正常工作。