我如何让屏幕表现得像一个标准的 bash shell?

我如何让屏幕表现得像一个标准的 bash shell?

刚刚了解了 Linux 上的 screen 命令 - 它真是天才。我喜欢它。但是,screen 中的实际终端/提示符的外观和行为与我的标准 bash 提示符不同。也就是说,颜色不一样,制表符补全似乎不起作用,等等。

有什么方法可以让我告诉屏幕表现得像一个正常的(至少,像我习惯的那样正常) bash 提示符?

附加信息

我通过 ssh 从 Mac(终端)连接到无头 Linux 机器(Ubuntu)。登录后,我得到了TERM=xterm-color,当我运行 screen 时,我得到了TERM=screen

我将尝试以下建议,看看是否可以$TERM先改变该值。

答案1

谢谢这个帖子,我所做的就是添加一行~/.screenrc

# ~/.screenrc
defshell -bash      # dash makes it a login shell

~/.bashrc然后,您的、等中的内容/etc/bashrc就应该开始运行。

答案2

screen 将 term-type 改为screen。您可以做以下两件事之一:

  1. 更改术语设置.screenrc
  2. 修改你的.bashrc文件查找TERM=screen以及TERM=xterm

答案3

我喜欢你写问题的方式,我也问过自己同样的问题,花了一段时间才弄明白。幸运的是,我已经对 shell 调用有所了解,所以我认为问题就出在这里。

以下是我的发现。首先,我个人认为登录 shell 和非登录 shell 之间的区别很有趣,值得了解。执行man $SHELL并搜索有关 INVOCATION 的部分以了解更多信息。

您可以在提示符下发出 来询问当前 shell 实例是登录 shell 还是非登录 shell shopt login_shell。请注意,这通常是只读选项。

在我的 Debian 系统上,screen始终默认使用非登录 shell。

在搜索网络并阅读后man $SHELL,我测试了一些方法,以下两种方法对我有用。添加~/.screenrc/更新一行如下:

shell -$SHELL

如果这不起作用并且您正在使用bash,您也可以尝试,如谢默斯

defshell -bash

shopt login_shell如上所述,您可以通过在提示符下发出来测试当前 shell 实例是否为登录 shell 。

答案4

screen 不会取代 bash,它会运行它或任何其他 shell。也许它正在运行csh,,zsh或,bash但使用不同的参数。

我要尝试做的第一件事是检查ps/proc/<pid>/cmdline确保它使用相同的 shell 和相同的参数login

之后,检查FILES 部分/etc/screenrc提到的任何其他文件man screen

相关内容