Pertanyaan Bagaimana saya mendapatkan gnome-terminal untuk mengembalikan judulnya setelah ssh?


Saya menjalankan set gnome-terminal untuk memperbarui judulnya sesuai dengan perintah terminal yang memperbarui judul mereka sendiri (default pada Fedora 13). Ketika saya SSH ke suatu tempat lain judul diperbarui dengan benar, tetapi kemudian SSH keluar dan gnome-terminal menunjukkan bahwa saya masih login dari jarak jauh. Ini membingungkan saat mencoba bernavigasi. Bagaimana cara menjaga perilaku saat masuk, dan mengembalikan judul lama saat keluar (secara default hanya "Terminal", tetapi lebih baik lagi menampilkan lokasi saat ini)?


2
2017-10-15 09:51


asal


Shell mana yang Anda gunakan di sisi lokal? - Ignacio Vazquez-Abrams
Tidak memiliki akses sekarang, cukup yakin itu bash - apa pun default untuk gnome-terminal pada Fedora 13. - Sam Brightman
Saya memperbaikinya menggunakan beberapa perintah wrappers ke ssh dan su: unix.stackexchange.com/a/341277/112190 - phyatt


Jawaban:


Tambahkan urutan escape set-title ke file rc shell Anda. Untuk bash v4, ini akan menjadi:

if [[ $TERM == xterm* ]]; then
    # This puts "user@host workdir" into the titlebar.
    # (look for section "PROMPTING" in bash's manual)
    title='\u@\h \w'

    PS1+="\[\e]0;$title\007\]"
fi

di dalam kamu ~/.bashrc.


Berhenti membaca di sini kecuali jika Anda suka main-main bash skrip.

Kode di atas sebenarnya adalah versi yang sangat disederhanakan dari saya ~/.bashrc potongan:

case $TERM in
[xkE]term*|rxvt*|cygwin)
    title_seq='\e]0;%s\007';;
screen*)
    # only set the "screen"window title
    title_seq='\ek%s\e\\';;
esac

# Very useful for: title syslog && tailf /var/log/syslog
title() { [ "$title_seq" ] && printf "$title_seq" "$*"; }

# Modify the prompt string.
if [ "$title_seq" ]; then
    title='\u@\h \w'
    PS1+="\[$(printf "${title_seq//\\/\\\\}" "$title")\]"
fi

Sebenarnya, itu milikku tua  ~/.bashrc potongan. Setelah menemukan PROMPT_DIRTRIM=1 Saya harus mengganti $PS1 modifikasi (yang terakhir if pernyataan) dengan:

update_title() {
    title "$USER@$HOSTNAME ${PWD/#$HOME/~}"
}
PROMPT_COMMAND="update_title"

6
2017-10-15 17:52