web-dev-qa-db-ja.com

シェルコマンド `tmux`は` ca n't use / dev / tty`エラーをスローします

今日はターミネーターからシロアリに切り替えました。また、Fishをインストールして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

私はターミネーターの問題には関心がなく、tmuxが魚から開いたときにbashシェルを開くことは二次的な問題です。彼らが問題を指摘するかもしれない場合に備えて、私は彼らを育てます。

Tmuxを呼び出そうとすると、なぜシロアリがオープンターミナル失敗エラーをスローするのか心配です。これを修正する方法や、なぜ発生するのかについてのアイデアはありますか?

Ubuntu 16.04 Fish 2.2

3
Riley Hughes

[これはトピックから外れた答えかもしれませんが、この投稿は私が「tmux/dev/ttyerror」をグーグルで検索したときの最初のヒットです。]

SSH経由でアクセスするときに同様の問題が発生し、「簡単な」ソリューション==>から再起動 SSHが見つかりました接続:)これが私が最初に/dev/ttyエラーに到達した方法です:

  • UbuntuシステムへのSSHアクセス、
  • win-10マシンにWindowsWSLとしてインストール
  • SSHセッションは、ConEmuを介して、別のWindows10マシン上の別のWSLシステムによって初期化されます。

SSHが機能するようになり、古い設定を~/.tmux.confにコピーしてfish + omfをインストールするのに数分を費やしました。


新しいSSHセッションを初期化することで、私にとってのすべての懸念に対処しました。

同じSSHセッション内で、状況が少しずれていました==>次のエラーが表示されました。

open terminal failed: can't use /dev/tty

ただし、特定の設定を変更せずに、ConEmuで新しい「タブ」を起動し、同じ宛先マシンへの別のSSHセッションを初期化することで、すべての問題を解決しました。これ以上の/dev/ttyエラーはありません。

1
llinfeng

不具合。

( 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 )
0
mullikine