当我打开一个新的终端窗口时,如何自动启动 GNU Screen?

Huw*_*ers 7 bash gnu-screen

我正在使用 Bash 运行 Ubuntu 14.04(Cinnamon Mint 17.1)。每次打开新的终端窗口时,我都会输入screen以启动屏幕窗口管理器,但我希望 shell 为我执行此操作。

我相信我需要修改.bashrc而不是.profile,因此它会在每个新的终端窗口上启动,而不仅仅是在登录时启动。所以我在 , 的末尾添加了以下内容.bashrc来替换 shell 进程:

exec /usr/bin/screen -q
Run Code Online (Sandbox Code Playgroud)

当我启动一个新的终端窗口时:

  • 通常,我会看到一个带有闪烁光标的空白窗口,只有在我按下 之后才会出现 Bash 提示Ctrl+C
  • 有时,当我按下Ctrl+C或调整终端窗口大小时,终端窗口会立即关闭。
  • 有时,我会收到一个没有的 Bash 提示$LS_COLORS(虽然很难重现这个,所以我不完全确定它何时或为什么发生)。

谁能解释为什么这对我来说失败了,并提出解决方案?

谢谢,

gle*_*man 6

当 screen 启动时,第一个窗口启动你的 shell,你已经告诉你的 shell 启动 screen。然后,当 screen 启动时,第一个窗口启动您的 shell,并且您已经告诉您的 shell 启动 screen。然后,当屏幕开始...

起泡,冲洗,重复。

screen 将$TERM变量设置为"screen",因此为了避免无休止地递归调用 screen(“海龟一直向下”),您的 .bashrc 可以以:

[[ $TERM != "screen" ]] && exec screen -q
Run Code Online (Sandbox Code Playgroud)

  • 要检查必须比较“$TERM”的值,请在编辑“.bashrc”之前运行 screen 并输入“echo $TERM”。 (3认同)
  • 以防万一有人尝试在 Ubuntu 16.04 中使用默认终端复制此内容:将其添加到您的 .bashrc `[[ $TERM != "screen.xterm-256color" ]] && exec screen -q` (2认同)