シェルコマンド `tmux` で `/dev/tty を使用できません` エラーが発生します。

シェルコマンド `tmux` で `/dev/tty を使用できません` エラーが発生します。

今日はターミネーターからターミットに切り替えました。また、フィッシュをインストールしてoh my fish,すべてを設定するのに数時間を費やしましたが、いくつかのタスクを実行するためにtmuxセッションを開始したときopen terminal failed: can't use /dev/tty

Fishをデフォルトのシェルに設定しました。 tmuxはgnome端末とxtermでうまく動作します。しかし、新しいtmuxセッションを開始すると、すべてbashシェルが開きます。ターミネータを開くと、次のエラーで開きます。Unsupported use of '='. To run 'bash' with a modified environment, please use 'env TERM=xterm-256color bash…' fish: TERM=xterm-256color bash -l

ターミネーターの問題は気にしません。 Fishで開くとtmuxがbashシェルを開くのはマイナーな問題です。彼らがこれを指摘した場合に備えて言及します。

tmuxを呼び出そうとすると、シロアリがターミナルオープンに失敗したエラーを引き起こす理由が心配です。この問題を解決する方法、なぜこれが起こるのかご存知ですか?

Ubuntu 16.04 魚 2.2

ベストアンサー1

間違い。

( exec </dev/tty; TMUX= tmux )

説明する。 tmuxが機能するには、TTYを指すように3つのfdがすべて必要です。

ls -la /proc/$$/fd; ( exec </dev/tty; ls -la /proc/$$/fd; TMUX= tmux )

回復試行に失敗しました。同じttyを指すだけでは十分ではありません。 &0、&1、&2はttyへのポインターを共有する必要があります。

export TTY=$(tty); ls -la /proc/$$/fd; ( exec </dev/tty; ls -la /proc/$$/fd; exec <$TTY; ls -la /proc/$$/fd; TMUX= tmux )

修理する。 &1はまだ&0が以前に指していたのと同じオブジェクトを指しているので、それを使用して復元してください。

( exec </dev/tty; exec <&1; TMUX= tmux )

おすすめ記事