Як я не дозволяю екрану GNU змінити своє запит? [зачинено]


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.00.02 (FAU) 5-грудня-03.

Відповіді:


16

Спробуйте додати (припустимо, що його ще немає) у файл .screenrc:

оболонка - $ SHELL

Це дасть вам оболонку входу під час ініціалізації сеансу на екрані або створення іншого терміналу зсередини одного.


1
У мене був "shell / bin / bash" у своєму .screenrc, мабуть, це повинен був бути "shell - / bin / bash" або те, що ви надали.
Swoogan

2

Багато дистрибутивів перевіряють тип терміналу перед встановленням підказки. Наприклад, Ubuntu містить цей маленький дорогоцінний камінь за замовчуванням .bashrc:

# встановити фантазійне підказку (не кольоровий, якщо ми не знаємо, що ми хочемо кольору)
випадок "$ TERM" в
    xterm-color) color_prompt = так ;;
есак

Оскільки екран використовує власну змінну TERM ("екран"), bash вважає, що він не здатний відображати модне кольорове запит, тому він за замовчуванням ставиться до більш простого. Екран, звичайно, повністю здатний до тих же складних підказок, що і звичайний термінал.

Отже, щоб перекрити цю поведінку, просто встановіть бажані параметри PS1 в кінці ~/.bashrcфайлу. Або якщо ви відчуваєте пригоди, знайдіть тест, який перевіряє значення змінної TERM та змініть її, щоб прийняти "екран" на додаток до "xterm-color".


1

Можливо, це спеціальна змінна, яка встановлена ​​у файлі ~ / .screenrc?


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

4
І що за настроєна змінна це буде? Якщо ви не знаєте відповіді, не відповідайте.
Swoogan

0

Був такий самий випуск (не більше спеціального запиту на екрані) на машині з SHELL -$SHELLі без setenv PS1screenrc, і немає спеціального тесту для (німого) терміналу в bashrc.

Встановлення використаного $ TERM:

$ echo $TERM
urxvt-unicode-256color

у screenrc повернувся мій звичайний підказки, перебуваючи під екраном:

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

PS: в іншому обліковому записі в цьому не було потреби, але bashrc тести на кольори кольорів та сучасний термінал таким чином 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.