使用GNU屏幕作为登录“外壳”


22

当您打开新的shell(通过登录,xterm或其他方式)时,自动运行屏幕的最佳方法是什么?

我看到最常见的建议是将exec screen您的常规shell的rc或login / profile文件放入其中,但是对于例如tcsh,login shell最后运行.login,而非login shell最后读取.cshrc。如果输入exec screen.cshrc,则登录shell将不会提供.login文件;如果输入.login,则非登录shell将不会运行。我假设其他shell也有类似的问题。


1
这不能回答问题,但是值得一提:tmux是从屏幕升级的革命性步骤,它试图接近与屏幕兼容的键盘。此页面记录了如何从.bashrc自动启动它。
datashaman 2012年

Answers:


19

一种方法是:

# if $STY is not set...
if [ -z "$STY" ]; then
    exec screen -ARR
fi

请注意,这是为编写的bash,但也应类似csh。将其.cshrc用于所有 shell。


另一种方法:你可以简单地设置screen为登录shell/etc/passwd本身,并把此行到您的~/.screenrc:(当然固定的路径。)

的defshell / bin / csh

但这可能会破坏运行/etc/passwd为各种命令定义的登录外壳的程序。

编辑:不要忘记将屏幕添加到/etc/shells


1
以前不了解STY变量,并且在屏幕手册中查找它时,我还发现您可以执行带屏幕内置屏幕以在新窗口中运行命令(例如,“ screen vi”将在窗口中打开vi新窗口,没有控制外壳)。顺便说一句,对于csh,您会将其放在.login文件而不是.cshrc中,您不希望它为“所有” shell运行。同样适用于bash,将其放在.profile或.bash_login中,而不放在.bashrc中。
haridsv

4

古老的问题,但是对同一件事的谷歌搜索使我来到这里,所以这是对偶然发现此页面的其他人的答复。

到目前为止,我发现的最好的东西是byobu(如果您的发行版有)。带有在登录时运行并可以一次控制多个屏幕的选项。

您可以在一个位置分离并注销,然后在另一位置登录到同一会话。

我发现屏幕非常适合用于运行服务器进程,但byobu对于日常事务而言非常有用。


-2

如何使用chsh:

chsh /usr/bin/screen

这将在/ etc / passwd中设置默认的登录shell。(你也可以在那里)


这样,除了登录外,用您的帐户很难执行任何操作。此外,您的系统管理员可能没有在/ etc / shells中显示屏幕。另外,请参阅接受的答案。
wfaulk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.