текущий каталог не отображается в строке заголовка при запуске под экраном - PullRequest
1 голос
/ 29 июня 2009

Моя переменная xterm $prompt в моем .tcshrc равна:

set prompt="<b><i>%{\033]0;%m:%~\007%}</b></i>%{^[[;37;1m%}%B%{^[[;34;1m%}%m%{^[[;34;1m%}:%b%c%# "

выделенная часть выше (<b><i>%{\033]0;%m:%~\007%}</b></i>) помещает имя хоста (%m) и текущий каталог (%~) в строку заголовка. (По крайней мере, я думаю , что именно это помещает его в строку заголовка; прошло уже много времени с тех пор, как я возился с этим приглашением).

Однако, когда я запускаю screen, текущий каталог перестает обновляться, когда я меняю каталоги.

Мои вопросы:

  1. Как я могу заставить эту подсказку работать на экране?
  2. Есть ли лучший способ отобразить текущий каталог в строке заголовка?

Я использую Linux с xterm и tcsh.

Ответы [ 2 ]

3 голосов
/ 29 июня 2009

Я думаю, что прямого пути нет, потому что работает экран. Однако экран может отображать свою собственную строку состояния, которую вы можете определить в .screenrc. Вот мой, например:

hardstatus alwayslastline
 hardstatus string '%{= kG}[ %{G}%H %{g}][%=%{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
0 голосов
/ 15 января 2011

Во-первых , чтобы заставить его работать, вы должны проверить, где именно находится строка с set prompt=blah-blah в вашем .tcshrc. Например, приведенный ниже код, который отлично работает в простом xterm , не будет работать под экраном в xterm:

switch ($TERM)
case "xterm*":
  set prompt="%{\033]0;${HOME:t}@%m:%l:%c08\007%}%{\033[36m%}%l:%c02%#%{\033[0m%} "
  # update xterm title to display current cmd in it
  alias postcmd 'echo -n "\033]0;${HOME:t}@`hostname`:${tty}    \!#:q\007"'
...

потому что экран по умолчанию устанавливает переменную $ TERM на screen, а не xterm! Поэтому вы должны добавить:

case "screen":
  # lame, but prevents an error in screen after 'su - root'
  if (! $?WINDOW) setenv WINDOW 1
  set prompt="%{\033]0;${HOME:t}@%m:${WINDOW}:%c08\007%}%{\033[36m%}%c02%#%{\033[0m%} "
  alias postcmd 'echo -n "\033]0;${HOME:t}@`hostname`:${WINDOW}    \!#:q\007"'
  ...

Во-вторых , убедитесь, что у вас есть эта строка в ~/.screenrc:

termcapinfo xterm* 'hs:ts=\E]2;:fs=\007:ds=\E]2;\007'
...