Como evito que o GNU Screen redefina meu prompt? [fechadas]

13

Quando corro a tela, muda meu prompt. Como evito esse comportamento? Por exemplo:

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

Curiosamente, ele não faz isso em outras máquinas. A máquina em questão é a atualização 4 do Redhat 4, com a versão de tela 4.00.02 (FAU) 5-Dec-03.

Swoogan
fonte

Respostas:

16

Tente adicionar (supondo que ainda não esteja lá) ao seu arquivo .screenrc:

shell - $ SHELL

Isso fornecerá um shell de login quando você inicializar uma sessão de tela ou criar outro terminal a partir de um.

Gary Chambers
fonte
1
Eu tinha 'shell / bin / bash' no meu .screenrc, aparentemente deveria ter sido 'shell - / bin / bash' ou o que você forneceu.
23409 Swoogan
2

Muitas distribuições verificam o tipo de terminal antes de definir o prompt. O Ubuntu, por exemplo, contém esta pequena jóia no .bashrc padrão:

# definir um prompt sofisticado (sem cores, a menos que saibamos que queremos "cores")
caso "$ TERM" em
    xterm-color) color_prompt = yes ;;
esac

Como a tela usa sua própria variável TERM ("tela"), o bash acha que não é capaz de exibir um prompt de cores sofisticadas, então o padrão é um mais simples. É claro que a tela é totalmente capaz dos mesmos prompts complexos que um terminal normal.

Portanto, para substituir esse comportamento, apenas defina as opções PS1 preferidas no final do ~/.bashrcarquivo. Ou, se você estiver se sentindo aventureiro, encontre o teste que verifica o valor da variável TERM e modifique-o para aceitar "screen" além de "xterm-color".

Insyte
fonte
1

Talvez essa seja uma variável personalizada definida no arquivo ~ / .screenrc?

Babu
fonte
1
Sim, para verificar PS1 setenv no global ou pessoal screenrc
raio de
4
E qual variável personalizada seria essa? Se você não souber a resposta, não responda.
23409 Swoogan
0

Teve o mesmo problema (não há mais prompt personalizado na tela) em uma máquina com SHELL -$SHELLe não setenv PS1no screenrc e nenhum teste especial para o terminal (burro) no bashrc.

Configurando o $ TERM usado:

$ echo $TERM
urxvt-unicode-256color

no screenrc, recebo meu prompt personalizado de volta enquanto estiver em Tela:

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

PS: outra conta não precisava disso, mas os testes bashrc para dircolors e um terminal moderno desta maneira 1 :

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

Eu acredito que isso funciona também:

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>
tuk0z
fonte