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
以使其正常工作。
如果我 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
以使其正常工作。