Bagaimana cara mencegah Layar GNU mengatur ulang prompt saya? [Tutup]

13

Ketika saya menjalankan layar itu mengubah prompt saya. Bagaimana saya mencegah perilaku ini? Sebagai contoh:

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

Menariknya, itu tidak melakukan ini pada komputer lain. Mesin yang dimaksud adalah Redhat 4 pembaruan 4, dengan versi Layar 4.00.02 (FAU) 5-Des-03.

Swoogan
sumber

Jawaban:

16

Coba tambahkan (dengan asumsi itu belum ada) ke file .screenrc Anda:

shell - $ SHELL

Ini akan memberi Anda shell login ketika Anda menginisialisasi sesi layar atau membuat terminal lain dari dalam satu.

Gary Chambers
sumber
1
Saya memiliki 'shell / bin / bash' di .screenrc saya, tampaknya seharusnya 'shell - / bin / bash' atau apa yang Anda berikan.
Swoogan
2

Banyak distribusi memeriksa jenis terminal sebelum mengatur prompt. Ubuntu, misalnya, mengandung permata kecil ini di .bashrc default:

# atur prompt mewah (non-warna, kecuali kita tahu kita "ingin" warna)
huruf "$ TERM" di
    xterm-color) color_prompt = yes ;;
esac

Karena layar menggunakan variabel TERM sendiri ("layar"), bash berpikir itu tidak mampu menampilkan prompt warna mewah sehingga default ke yang lebih sederhana. Layar, tentu saja, sepenuhnya mampu dari kompleks yang sama seperti terminal normal.

Jadi, untuk mengganti perilaku ini, atur saja opsi PS1 pilihan Anda di akhir ~/.bashrcfile Anda . Atau, jika Anda ingin berpetualang, temukan tes yang memeriksa nilai variabel TERM dan memodifikasinya untuk menerima "layar" selain "warna xterm".

Insyte
sumber
1

Mungkin ini adalah variabel khusus yang diatur dalam file ~ / .screenrc?

Babu
sumber
1
Ya, periksa setenv PS1 di global atau personal screenrc
radius
4
Dan variabel khusus apa itu? Jika Anda tidak tahu jawabannya, jangan jawab.
Swoogan
0

Memiliki masalah yang sama (tidak ada lagi custom prompt di layar) pada mesin dengan SHELL -$SHELLdan tidak ada setenv PS1di screenrc, dan tidak ada tes khusus untuk terminal (bisu) di bashrc.

Mengatur $ TERM bekas:

$ echo $TERM
urxvt-unicode-256color

di screenrc mendapatkan prompt kustom saya kembali di bawah Layar:

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

PS: akun lain tidak perlu untuk ini, tetapi tes bashrc untuk dircolors dan terminal modern dengan cara ini 1 :

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

Saya percaya ini juga berfungsi:

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