Как я могу запретить GNU Screen сбрасывать мою подсказку? [закрыто]


13

Когда я запускаю экран, он меняет мою подсказку. Как я могу предотвратить это поведение? Например:

$ echo $PS1
\[\e]0;\h:Prod\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
$ screen
$ echo $PS1
[\u@\h \W]\$

Интересно, что он не делает этого на других машинах. Речь идет о Redhat 4, обновление 4, версия Screen 4.00.02 (FAU) 5 декабря 2003 года.

Ответы:


16

Попробуйте добавить (предполагая, что его еще нет) в ваш файл .screenrc:

оболочка - $ SHELL

Это даст вам оболочку входа в систему, когда вы инициализируете сеанс экрана или создаете другой терминал из него.


1
В моем .screenrc был «shell / bin / bash», очевидно, это должен был быть «shell - / bin / bash» или то, что вы предоставили.
Swoogan

2

Многие дистрибутивы проверяют тип терминала перед установкой приглашения. Ubuntu, например, содержит этот маленький драгоценный камень в файле по умолчанию .bashrc:

# установить модное приглашение (не цветное, если мы не знаем, что мы «хотим» цвет)
кейс "$ TERM" в
    xterm-color) color_prompt = yes ;;
ESAC

Так как screen использует свою собственную переменную TERM («screen»), bash считает, что не может отображать причудливую цветовую подсказку, поэтому по умолчанию используется более простая. Экран, конечно, полностью способен на те же сложные подсказки, что и обычный терминал.

Итак, чтобы переопределить это поведение, просто жестко установите предпочитаемые параметры PS1 в конце вашего ~/.bashrcфайла. Или, если вы чувствуете себя авантюрным, найдите тест, который проверяет значение переменной TERM и измените его так, чтобы он принимал «screen» в дополнение к «xterm-color».


1

Возможно, это настраиваемая переменная, которая установлена ​​в файле ~ / .screenrc?


1
Да, проверьте для setenv PS1 в глобальном или личном screenrc
радиус

4
И что это за настраиваемая переменная? Если вы не знаете ответ, не отвечайте.
Swoogan

0

Возникла та же проблема (больше нет пользовательских подсказок на экране) на машине с SHELL -$SHELLи нет setenv PS1на screenrc, и не было специального теста для (немого) терминала в bashrc.

Установка используемого $ TERM:

$ echo $TERM
urxvt-unicode-256color

в screenrc вернул мое пользовательское приглашение, находясь под экраном:

- #term xterm-256color
+ term urxvt-unicode-256color

PS: другой аккаунт не нуждался в этом, но bashrc тестирует на dircolors и современный терминал следующим образом 1 :

if [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] ; then
PS1=<my fancy prompt>

Я считаю, что это также работает:

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.