使用此片段(内联 shell 配置器)时:
config.vm.provision "shell" do |s|
s.inline = <<-SHELL
<shell code>
SHELL
end
的结果是
==> default: mesg:
==> default: ttyname failed
==> default: :
==> default: Inappropriate ioctl for device
看起来其他人也发现了 这个问题。有人知道如何解决这个问题吗?
我注意到,即使这条信息显示为错误(红色),脚本还是成功执行了!几天后,我看到了一个可能的修复方法,于是 我在 SO 上发布了一个答案。修复方法如下:
# Prevent TTY Errors (copied from laravel/homestead: "homestead.rb" file)... By default this is "bash -l".
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
也许你并不需要它,但你可以试试看,如果对你有用,就可以使用它。
正如你在上面的注释行中所看到的,拉威尔团队已经阻止了 "mesg: ttyname failed Inappropriate ioctl for device" 的使用。谢谢您的帮助!
大多数开发人员都希望在开发时避免错误/警告,因此这似乎是我们需要的修复(可能的修复)。
重要说明:我还没怎么测试过这个解决方案,但盒子启动时没有出现 "mesg: ttyname failed Inappropriate ioctl for device" 错误!您可以自由尝试,如果遇到任何问题,只需发表评论,以节省他人的时间!
您使用的是什么版本的 Vagrant 和 VirtualBox?
昨天,我在使用Vagrant 1.8.5和VirtualBox 5.1.4(Ubunty 16.04)时遇到了这个问题。 不过,今天我升级到 Vagrant 1.9.2 和 VirtualBox 5.1.14 后,这个问题就消失了。
请注意,在升级之前,正如 @Minister 也提到的,脚本的执行没有问题。 它只是输出了"ttyname failed"(ttyname失败")信息,给人的感觉是发生了错误,而实际上配置脚本执行成功了。