发送"mesg ttyname失败的不适当的设备ioctl"的流浪汉ubuntu框内联脚本

ddi*_*hev 2 ubuntu vagrant

我在每个结尾处运行几个内联脚本vagrant up.

Vagrant.configure(2) do |config|
  config.vm.box = "bento/ubuntu-16.04"

  ... omitting all the other steps related to networking, folders, etc

  config.vm.provision "shell", inline: "service nginx restart", run: "always"

  config.vm.post_up_message = "Done!"
end
Run Code Online (Sandbox Code Playgroud)

我在日志中得到了这个:

==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: mesg:
==> default: ttyname failed
==> default: :
==> default: Inappropriate ioctl for device

==> default: Machine 'default' has a post `vagrant up` message. This is a message
==> default: from the creator of the Vagrantfile, and not from Vagrant itself:
==> default:
==> default: Done!
Run Code Online (Sandbox Code Playgroud)

从我到目前为止所发现的 - 它应该是Ubuntu配置中的东西,而不是Vagrant本身.我发现并尝试了这个解决方案没有成功:https: //github.com/mitchellh/vagrant/issues/7368

但是,如果相关 - 我正在运行最新的Vagrant 1.8.7和macOS Sierra.

Min*_*ter 5

也许这个问题的答案为时已晚,但这可能对其他人有所帮助,分享我的尝试是件好事:

# 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'"
Run Code Online (Sandbox Code Playgroud)

因此,正如您在上面的注释行中所看到的那样 - lagvel团队已经阻止了"mesg:ttyname使设备不合适的ioctl".

大多数开发人员希望在我们进行开发时避免错误/警告,因此它似乎是我们需要的修复.

重要说明:我没有对此解决方案进行过多测试,但是该框开始没有"mesg:ttyname failed inappropriate ioctl for device"错误!您可以自由尝试,如果您遇到任何问题,只需发表评论即可节省别人的时间!