【问题标题】:cygwin: vagrant ssh, empty command promptcygwin:vagrant ssh,空命令提示符
【发布时间】:2017-12-10 19:59:59
【问题描述】:

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

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 即使 ssh 没有本地 tty,选项也会强制分配 tty。”

【问题讨论】:

    标签: vagrant cygwin


    【解决方案1】:

    一般的解决方案是教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。请参阅我的错误报告并通过 hack 发送至 lib/vagrant/util/ssh.rb 以使其正常工作。

    【讨论】:

      【解决方案2】:

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

      choco install conemu via Chocolatey,它可以工作

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          我遇到了上述相同的问题。但仅在三台 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 1.9.7 后,“vagrant ssh”按预期工作(显示提示和所有其他内容)。
          【解决方案5】:

          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

          【讨论】:

          • 但这确实与薄荷有关。如果我在 cmd 中运行:C:\cygwin64\bin\bash --login -i,然后我可以执行vagrant ssh 并获得命令提示符。
          • 但是如果我使用 mintty.exe,vagrant ssh 会导致一个空的命令提示符。我已连接,但没有领先的 "vagrant@homestead:~$"
          猜你喜欢
          • 2018-05-01
          • 1970-01-01
          • 2011-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-10
          • 2010-11-30
          相关资源
          最近更新 更多