在我使用 git push
、hexo 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 举报,一经查实,本站将立刻删除。