微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux 错误 ttyname failed: Inappropriate ioctl for device 解决方法

在我使用 git pushhexo deploy 等类似操作时,时常会看到 ttyname Failed: Inappropriate ioctl for device 的报错信息。这怎么能行,不是 0 errors,0 warnings 能行?这里就来记录一下这个问题的解决办法。

问题原因

Ubuntu 知道并不是所有人都会对 root 账户执行图形登录,所以在.profile 文件中设置了在这种情况下产生虚假错误。你可以看到,在 /root/.profile 文件末尾有这样一行。

mesg n || true

这是什么呢?这是为了防止像 talk 之类的程序写入你的控制台,这在你通过文本会话登录 root 账户时尤为重要。|| true 是为了防止在请求 tty 失败时的错误导致 shell 脚本中止。

把这句话放在.profile 文件中,能够让每次运行 bash 的时候,执行这句话。当你从没有 tty 设备的绘画中运行时,你就能看到报错,并且这不会影响其他程序的运行,只是显示一条消息。

解决方

虽说这个消息无害,但是总是看到报错消息还是不太舒服,那就把它去掉吧。

将 /root/.profile 文件中的 mesg n || true 改为如下内容

tty -s && mesg n || true

这就能让 mesg 在没有 tty 时,不发送消息,而在有 tty 时继续调用。现在你可以不用再看到 ttyname Failed: Inappropriate ioctl for device 了。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐