LINUX.ORG.RU
ФорумAdmin

screen и тип терминала


0

1

screen - штука непростая. Подскажите, пожалуйста, что надо доработать. Выложу все файлы, что выполняются у меня при авторизации в системе:
/etc/profile:

export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/local/bin:/usr/local/sbin:/usr/local/games:/etc/rc.d:/var/log/setup"
export MANPATH=/usr/local/man:/usr/man
export PS1='\u@\h:\w\$ '
export PS2='> '
export TERM=xterm
export COLORTERM=rxvt
export DISPLAY=":0"
export HOSTNAME="`cat /etc/HOSTNAME`"
export LESSOPEN="|lesspipe.sh %s"
export LESS="-M"
export INPUTRC=/etc/inputrc
umask 002
for profile_script in /etc/profile.d/*.sh ; do
  if [ -x $profile_script ]; then
    . $profile_script
  fi
done
unset profile_script


~/.bash_login:
if [ -a /etc/bash_login ]
	then . /etc/bash_login
fi


/etc/bash_login:
if [ -z "$STY" ]
	then exec screen -c /etc/screenrc -d -RR
fi


/etc/screenrc:
startup_message off
altscreen on
multiuser on
shell -$SHELL
deflog on
defscrollback 20000
termcap  facit|vt100|xterm LP:G0
terminfo facit|vt100|xterm LP:G0
termcap  vt100 dl=5\E[M
terminfo vt100 dl=5\E[M
termcap  facit al=\E[L\E[K:AL@:dl@:DL@:cs=\E[%i%d;%dr:ic@
terminfo facit al=\E[L\E[K:AL@:dl@:DL@:cs=\E[%i%p1%d;%p2%dr:ic@
termcap  sun 'up=^K:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:IC=\E[%d@:WS=1000\E[8;%d;%dt'
terminfo sun 'up=^K:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC:IC=\E[%p1%d@:WS=\E[8;%p1%d;%p2%dt$<1000>'
termcap  xterm|fptwist hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
terminfo xterm|fptwist hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
termcap xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
terminfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
termcap xterm|xterms|xs ti=\E7\E[?47l
terminfo xterm|xterms|xs ti=\E7\E[?47l
termcap  hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'
terminfo hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'
termcap wy75-42 nx:xo:Z0=\E[?3h\E[31h:Z1=\E[?3l\E[31h
terminfo wy75-42 nx:xo:Z0=\E[?3h\E[31h:Z1=\E[?3l\E[31h
bind ^k
bind L
bind ^\
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history


Во-первых мне бы хотелось избавиться от сообщения «New screen...» Пусть лучше терминал запускается сразу, без предварительных сообщений.
Во-вторых, с типом терминала непонятно. Вот у меня в /etc/profile переменной $TERM присваивается xterm. Пробовал варианты linux и vt100 - переставал работать возврат из программы постраничного просмотра less. А с xterm - тоже не всё корректно, при чтении манов символы табуляции отображаются знаками вопроса, а mc не реагирует мышь (только в screen, в иксах -реагирует).

★★★★★

Я в итоге после многих лет на screen перешёл на tmux. Он и из коробки приличнее работает (и возможности терминала, и хоткеи), и настраивается удобнее, и одновременную работу с нескольких устройств поддерживает.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

и одновременную работу с нескольких устройств поддерживает.

типа screen -x или что-то более хитрое?

sdio ★★★★★ ()
Ответ на: комментарий от sdio

типа screen -x или что-то более хитрое?

Наверное, дело в том, что я в screen до использования -x так не дошёл, а в tmux оно автоматом работает. Однажды не отцепил сессию, подцепился с другой машины — смотрю, область экрана ограничена :) tmux настраивает экран на минимальное пересечение экранов, чтобы терминал был идентичен. Оказалось иногда вполне удобно.

KRoN73 ★★★★★ ()

Вот у меня в /etc/profile переменной $TERM присваивается xterm.

Никогда так не делай.

Gotf ★★★ ()
Ответ на: комментарий от Gotf

Никогда так не делай.

А как надо? Я неспроста показал все файлы, интересно мнение, я правильно делаю, и, если неправильно, то что нужно поменять, кроме советов сменить screen на tmux.

sunny1983 ★★★★★ ()
Ответ на: комментарий от sunny1983

/etc/profile может читаться в терминале любого типа, и если там жёстко прописано xterm, то многие другие от этого сломаются и будут работать абы как (цвета, клавиши Home/End/PgUp/PgDn и т.д.).

Gotf ★★★ ()
Ответ на: комментарий от Gotf

Но если не прописать xterm, то перестаёт работать выход из less обратно в тот же экран. Какой тогда выход?
Вы обратили внимание, что я ещё добавил опцию shell -$SHELL, чтобы bash, запускающийся внутри screen принудительно обрабатывал /etc/profile, иначе пришлось бы работать с голым окружением.

sunny1983 ★★★★★ ()
Ответ на: комментарий от sunny1983

Какой тогда выход?

Прописывать где-нибудь в .bashrс /etc/profile слишком много где читается, чтобы лепить туда такие специфические вещи. И даже в своём .bashrc лучше задавать максимально точные условия, чтобы ломалось как можно меньше терминалов. Вот типичный пример для бестолковых VTE-терминалов, которые поддерживают 256 цветов, но в них захардкожено TERM=xterm:

if [[ "$TERM" == "xterm" ]]; then
	TERM="xterm-256color"
fi
И если это делается ради одного less, то не лучше ли поискать более конкретные решения?

Gotf ★★★ ()
Ответ на: комментарий от Gotf

И если это делается ради одного less

Именно. Впервые я узнал о screen года 4 назад, когда на одном форуме (возможно этом) я спросил как сделать так, чтобы при работе в чистой консоли корректно работал выход из less как и в иксовых эмуляторах терминала. Потом уже в процессе использования въехал и в другие плюсы использования screen: возвращаться в тот же сеанс между ssh-сесиями.

sunny1983 ★★★★★ ()
Ответ на: комментарий от sunny1983

А что думаете о таком варианте:

export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/local/bin:/usr/local/sbin:/usr/local/games:/etc/rc.d:/var/log/setup"
export MANPATH=/usr/local/man:/usr/man
export HOSTNAME="`cat /etc/HOSTNAME`"
export PS1='\u@\h:\w\$ '
export PS2='> '
export DISPLAY=":0"
export LESSOPEN="|lesspipe.sh %s"
export LESS="-M"
export INPUTRC=/etc/inputrc
if [ "$TERM" = "linux" ]
   then export TERM=vt100
fi
export COLORTERM=rxvt
umask 002
for profile_script in /etc/profile.d/*.sh ; do
  if [ -x $profile_script ]; then
    . $profile_script
  fi
done
unset profile_script

sunny1983 ★★★★★ ()
Ответ на: комментарий от Gotf

Народ, я не получил ни одного совета, кроме как заменить screen на tmux. Данный совет не отвечает на вопрос, что мне делать со сценариями входа.

sunny1983 ★★★★★ ()
Ответ на: комментарий от sunny1983

Народ, я не получил ни одного совета

в этом весь лор. ты еще не заметил? ;)

aol ★★★★★ ()
Ответ на: комментарий от sdio

лично твои аргументы в пользу tmux vs screen

Как минимум tmux-resurrect и интеграция плагинов для vim, которые не могут в screen, к примеру можно взять tmux-completion, который комплитит исходя из содержимого соседних panes&windows. Со screen так не может.

xinu ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.