GNU Ekranının istemimi sıfırlamasını nasıl önleyebilirim? [kapalı]


13

Ekranı çalıştırdığımda istemimi değiştiriyor. Bu davranışı nasıl önleyebilirim? Örneğin:

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

İlginçtir, bunu diğer makinelerde yapmaz. Söz konusu makine, Ekran sürümü 4.00.02 (FAU) 5-Dec-03 ile Redhat 4 güncelleme 4'tür.

Yanıtlar:


16

.Screenrc dosyanıza (zaten orada olmadığını varsayarak) eklemeyi deneyin:

kabuk - $ SHELL

Bu, bir ekran oturumu başlattığınızda veya bir ekrandan başka bir terminal oluşturduğunuzda size bir oturum açma kabuğu verecektir.


1
.Screenrc içinde 'shell / bin / bash' vardı, görünüşe göre 'shell - / bin / bash' ya da verdiğiniz şey olmalı.
Swoogan

2

Birçok dağıtım, istemi ayarlamadan önce terminal tipini kontrol eder. Örneğin Ubuntu, varsayılan .bashrc içinde bu küçük gem'i içerir:

# süslü bir istem ayarlayın (renk "istediğimizi bilmediğimiz sürece renksiz)
durumda "$ TERM"
    xterm-color) color_prompt = evet ;;
esac

Ekran kendi TERM değişkenini ("ekran") kullandığından, bash süslü bir renk istemi görüntüleyemediğini düşünür, bu yüzden varsayılan olarak daha basit olanı kullanır. Ekran, elbette, normal bir terminal ile aynı karmaşık istemleri tamamen yapabilir.

Bu nedenle, bu davranışı geçersiz kılmak için, ~/.bashrcdosyanızın sonunda tercih ettiğiniz PS1 seçeneklerini belirleyin . Ya da kendinizi maceraperest hissediyorsanız, TERM değişkeninin değerini kontrol eden testi bulun ve "xterm-color" a ek olarak "screen" seçeneğini kabul etmek için değiştirin.


1

Belki de bu ~ / .screenrc dosyasında ayarlanmış özelleştirilmiş bir değişkendir?


1
Evet, küresel veya kişisel screenrc'de setenv PS1'i kontrol edin
yarıçap

4
Ve bu hangi özelleştirilmiş değişken olabilir? Cevabı bilmiyorsanız cevap vermeyin.
Swoogan

0

Screenrc olan SHELL -$SHELLve hayır setenv PS1olan bir makinede aynı sorun (ekranda özel istem yok) ve bashrc'deki (dilsiz) terminal için özel bir test yoktu.

Kullanılan $ TERM ayarı:

$ echo $TERM
urxvt-unicode-256color

Screenrc'de, Ekran altındayken özel istemimi geri aldım:

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

Not: başka bir hesabın buna ihtiyacı yoktu, ancak dircolors için bashrc testleri ve bu şekilde modern bir terminal 1 :

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

Bunun da işe yaradığına inanıyorum:

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.