Tela GNU e .bashrc

1

Estou tentando iniciar o GNU Screen usando meu .bashrc . Estou quase lá:

if [ -z "$STY" ]; then
   exec screen -dR
else
   exec gnome-terminal
fi

Isso está errado! O primeiro caso funciona, screen é lançado quando eu abro um terminal. Mas a segunda parte falha. Eu quero abrir um terminal regular se eu já tiver um aberto. Mas isso só abre um número infinito de terminais ...

    
por devin 30.04.2009 / 22:13

3 respostas

2

Você pode tentar (depois do outro):

if [ "$HAS_STARTED_TERM"!="1"]; then
    HAS_STARTED_TERM=1
    export HAS_STARTED_TERM
    exec gnome-terminal
fi
    
por 30.04.2009 / 22:17
1

Se não me engano, o terminal abriria normalmente se você remover o bloco "else" ... Ou talvez eu esteja perdendo alguma coisa.

    
por 30.04.2009 / 22:19
1

A maneira que eu tenho as coisas configuradas eu lanço a tela em todos os servidores que eu me conecto se tiver tela. Quando eu desconectar e reconectar, a mesma sessão de tela é reconectada. Soa bem até agora, é o que todo mundo quer. Mas, se você tem várias janelas abertas na tela, como você se desconecta sem fechá-las? Existem 2 opções:

  1. Meu cliente ssh preferencial desconectará se eu clicar em "'." e no meu screenrc eu uso "autodetach", mas isso só funciona remotamente.
  2. Para telas locais (ou remotas), tenho meu bashrc configurado para desconectar se eu me desconectar da tela. No entanto, em casos raros, você deseja desconectar e permanecer conectado. Para isso, eu tenho um pouco de mágica no meu .bash_logout para complementar a minha magia .bashrc.

.screenrc

hardstatus alwayslastline
hardstatus string '%{= kG} %{G}%H %{g}[%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}] %{W}%c %{g}'
#dynamic title
shelltitle '# |sh'

#When your ssh connection dies, screen is autodetached
autodetach on 

#terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I"
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm"
termcapinfo xterm-color "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm"
# erase background with current bg color
defbce "on"

.bashrc

# set a fancy prompt (non-color, unless we know we "want" color)
if [[ $TERM =~ xterm-.*color || $TERM =~ screen.* ]]; then
   PS1='\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]# '
   #if [[ $TERM =~ screen.* ]]; then
   export SCREEN_CMD=$(which screen 2>/dev/null)
   if [[ ( $TERM =~ screen.* ) || ${SCREEN_CMD-X} != X && ${SCREEN_CMD-X} != "" ]]; then
      # This is the escape sequence ESC k \w ESC \
      #Use path as title
      #SCREENTITLE='\[\ek\w\e\\]'
      #Use program name as title
      SCREENTITLE='\[\ek\e\\]'
   else
      #Soliton@freenode#screen suggested screen -xRRS primary
      echo ^[k$(hostname|sed "s/\..*//")^[\
      export SCREEN_CMD=$(which screen 2>/dev/null)
      if [[ ${SCREEN_CMD-X} != X && ${SCREEN_CMD-X} != "" ]]; then
         screen -xRRS primary && unset SCREEN_CMD && [[ $(stat -c %Y .screen_do_not_disconnect 2>/dev/null || stat -f %m .screen_do_not_disconnect 2>/dev/null) -gt 0 ]] || exit
      fi
   fi
else
   PS1='\u@\h:\w# '
   SCREENTITLE=''
   #Soliton@freenode#screen suggested screen -xRRS primary
   echo ^[k$(hostname|sed "s/\..*//")^[\
   export SCREEN_CMD=$(which screen 2>/dev/null)
   if [[ ${SCREEN_CMD-X} != X ]]; then
      screen -xRRS primary && unset SCREEN_CMD && [[ $(stat -c %Y .screen_do_not_disconnect 2>/dev/null || stat -f %m .screen_do_not_disconnect 2>/dev/null) -gt 0 ]] || exit
   fi
fi
PS1="${SCREENTITLE}${PS1}"

.bash_logout

# ~/.bash_logout

time="$(TZ=UTC date -d @0 2>/dev/null||date -r 0 +%Y%m%d%H%M)"
touch -d "$time" ~/.screen_do_not_disconnect 2>/dev/null || touch -t "$time" ~/.screen_do_not_disconnect

Os scripts acima funcionam no Linux e no Mac OS X (que é a razão pela qual você vê "2 > / dev / null ||" nos comandos stat, touch e date). Eu também uso um xterm de 256 cores e acredito que todo o código de suporte está incluído aqui. Apesar da duração deste post, eu tenho muito trim nos scripts / configs.

    
por 11.06.2009 / 08:22