“屏幕”指的是如何重新连接到断开连接的 ssh 会话中提到的程序。那是一个很好的设施。
但是有一个问题我很想知道。我怎么知道我是否在“屏幕”内运行?区别在于:
更好的是,我希望在 PS1 提示中显示此状态,以便我可以随时自动看到它。
Wes*_*ley 88
(从StackOverflow上的“我如何判断我是否在屏幕上? ”中窃取,由用户jho撰写。PS 您不能在 StackExchange 站点上为重复项投票。)
检查$STY。如果它为空,则您在“真实”终端上。如果它包含任何内容,则是您所在屏幕的名称。
如果您不在屏幕中:
eric@dev ~ $ echo $STY
eric@dev ~ $
Run Code Online (Sandbox Code Playgroud)
如果您在屏幕中:
eric@dev ~ $ echo $STY
2026.pts-0.ip-10-0-1-71
Run Code Online (Sandbox Code Playgroud)
如果您使用 tmux 而不是 screen,还要检查$TMUX. 要将其添加到您的提示中,请将以下内容添加到您的~/.bashrc:
if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi
Run Code Online (Sandbox Code Playgroud)
Hei*_*nzi 13
我通常使用的简单检查是点击Ctrl- a:
如果光标跳到行首,则我不在屏幕会话中。
如果没有任何反应,我知道我在屏幕会话中并且我刚刚使用了屏幕控制键。然后我点击a(跳到行首),w(显示当前屏幕窗口)或执行一些其他“无害”屏幕命令以返回命令提示符。
(当然,这仅在您当前正在执行 bash 或其他一些“跳到行首”的软件或在按 Ctrl-a 时执行等效无害的操作时才有效。)
好吧,大多数时候(没有人试图搞砸事情)您TERM将被设置为screen(或至少在screen某处提及)。
解决问题的简单方法是到处运行 screen 。没有它就不要离开家,我说。
小智 7
我把这个放在我的.bashrc:
PS1='[\u@\h \W'
if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
PS1="$PS1]$"
Run Code Online (Sandbox Code Playgroud)
这不是万无一失的,但是每当我创建一个新屏幕时,它都会将窗口编号放在提示中。如果我不跑步screen,那就没有数字了。