shell 命令 `tmux` 抛出 `can't use /dev/tty` 错误

shell 命令 `tmux` 抛出 `can't use /dev/tty` 错误

我今天刚刚从 Terminator 切换到 Termit。我还安装了 Fish,并oh my fish,花了几个小时配置了所有内容,但当我启动 tmux 会话来完成一些工作时,它返回了open terminal failed: can't use /dev/tty

我将 Fish 设置为默认 shell。 tmux 在 gnome 终端和 xterm 中运行良好。但是当我启动新的 tmux 会话时,它们都会打开 bash shell。当我打开终结者时,它会打开并出现此错误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 shell 是次要问题。我会把它们提出来,以防他们指出这个问题。

我担心为什么当我尝试调用 tmux 时白蚁会抛出打开终端失败错误。知道如何解决这个问题或为什么会发生这种情况吗?

Ubuntu 16.04 鱼 2.2

答案1

错误。

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

说明。您需要所有 3 个 fd 都指向 TTY,tmux 才能工作。

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 )

答案2

[这可能是一个偏离主题的答案,但这篇文章是我在 Google 上搜索“tmux /dev/tty 错误”时第一个点击的帖子。]

我在通过 SSH 访问时遇到了类似的问题,并发现了一个“显而易见”的问题解决方案==> 到重新开始SSH 连接:) 下面是我第一次遇到/dev/tty错误的情况:

  • SSH 访问 Ubuntu 系统,
  • 在 Win-10 计算机上作为 Windows WSL 安装
  • SSH 会话由另一台 Windows 10 计算机上的另一个 WSL 系统通过 ConEmu 初始化

我刚刚让 SSH 开始工作,并且刚刚花了几分钟将旧设置复制到~/.tmux.conf并安装fish + omf.


初始化一个新的 SSH 会话解决了我所有的担忧。

在同一个 SSH 会话中,事情有点不对劲 ==> 系统提示我出现以下错误:

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

然而,在不更改任何特定设置的情况下,在 ConEmu 中启动一个新的“选项卡”并初始化到同一目标计算机的另一个 SSH 会话已经解决了所有问题。不再/dev/tty有错误。

答案3

在安装 omf Fish 之前卸载 tmux。当您完成 omf Fish 安装后。重新安装 tmux。这对我有用!

答案4

我不确定是什么termite让你胜过gnome-terminal。有一个“选择模式”,但是如果你在里面termite运行,那么已经有一个类似的选择模式可以使用。如果您想在 Tmux 内部启动不同的 shell ,请参阅 Tmux配置选项。tmuxtermitetmuxbashdefault-shell

搜索结果排名第一的是多路复用白蚁是关于他们一起工作时遇到的问题。

这里的实际解决方案似乎是termite从方程中删除。

相关内容