1. ホーム

linux error ttyname failed: デバイスに不適切な ioctl Solution

2022-02-07 23:18:11

を使う前に  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を要求する際のエラーが失敗し、シェルスクリプトがアボートするのを防ぐために使用されます。

この文章を .profile  ファイルで、bash を実行するたびにこの行を実行できるようにします。ttyデバイスのない描画から実行すると、エラーが報告され、他のプログラムには影響を与えず、メッセージが表示されるだけです。

解決方法

メッセージは無害ですが、やはり常にエラーメッセージが表示されるのは落ち着かないので、解消してしまいましょう。

を削除します。  /root/.profile  ファイルを  mesg n || true  は以下のように変更されます。

tty -s && mesg n || true

これにより  mesg  は、tty がないときにはメッセージを送信せず、tty があるときには呼び出しを継続します。これで  ttyname failed: Inappropriate ioctl for device  今すぐ