刚刚了解了 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
。您可以做以下两件事之一:
- 更改术语设置
.screenrc
- 修改你的
.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
。