Judul Tab Terminal setelah Sesi SSH

11

Di Mac OS X (saya di 10.6.8, meskipun saya percaya versi lain sama) ssh'ing ke mesin jarak jauh mengubah judul tab saat ini di Terminal. Yang menjengkelkan, ketika saya memutuskan sambungan dari mesin jarak jauh, baik secara eksplisit dengan exitatau melalui batas waktu, judul tab tidak berubah kembali ke apa itu sebelumnya.

Hampir setiap hari, ini hampir menyebabkan saya menderita serangan jantung, ketika saya mengetik melakukan perintah atau lainnya, hanya untuk melihat dari sudut mata saya bahwa tab tersebut masih bernama user @ remotehost. Saya pengguna yang berhati-hati yang selalu cenderung pwddll untuk mengkonfirmasi lokasi saya sebelum melakukan apa pun, namun itu masih membuat saya panik saat saya melakukan DROP DATABASE xdan saya melihat nama host jarak jauh di tab.

Singkatnya, adakah cara untuk mengembalikan judul ini saat memutuskan sambungan dari host jarak jauh, atau apakah saya harus tetap membuka tab baru setiap kali saya memutuskan sambungan, untuk mengatur ulang judul?

Peter O'Callaghan
sumber
nama terminal juga diatur ulang saat Anda keluarnpm
Awesome_girl

Jawaban:

20

Tambahkan PROMPT_COMMANDke .bash_profile

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOSTNAME}\007';$PROMPT_COMMAND"

The PROMPT_COMMANDdijalankan setiap kali prompt ditampilkan.

Harap dicatat bahwa kami menyertakan PROMPT_COMMANDvariabel lingkungan yang ada , sehingga kami tidak kehilangan pengaturan yang ada (yaitu update_terminal_cwd).

s01ipsist
sumber
2
Pastikan untuk menambahkan kode Anda ke PROMPT_COMMAND daripada menggantinya, misalnya PROMPT_COMMAND="<your code>; $PROMPT_COMMAND"; jika tidak, Anda akan menonaktifkan fungsionalitas lain yang menggunakan variabel ini. Sebagai contoh, / etc / bashrc menggunakannya untuk mengatur direktori kerja terminal saat ini sehingga Terminal dapat menampilkannya dan menggunakannya untuk berbagai operasi.
Chris Halaman
@ChrisPage Apakah kode baru harus ada sebelumnya $PROMPT_COMMANDagar fungsi lain dapat dipertahankan?
reve_etrange
Mengapa tidak memasukkannya langsung ke PS1?
Yongwei Wu
apakah ini cara Anda mengedit .bash_profile? sublime $HOME/.bash_profile?
Awesome_girl
@Awesome_girl Pastikan bahwa sublperintah diinstal, dan kemudian edit file dari terminal Anda menggunakan subl ~/.bash_profile. Jika perintah ini tidak ada, ikuti ini: sublimetext.com/docs/2/osx_command_line.html
XtraSimplicity
1

Inilah yang harus Anda tempelkan ke .bash_profilefile Anda . Ini jauh lebih bersih dan mengambil pendekatan apa yang Apple lakukan ketika memperbarui direktori kerja Anda saat ini. Pemeriksaan untuk variabel update_term_titlesudah ada tidak benar-benar diperlukan (karena tidak ada yang memanggil bash -- login), tetapi hanya hadir sebagai penjaga.

if [ -z "$INSIDE_EMACS" ]; then
    # Update the terminal title on every prompt shown
    update_term_title() {
        # Print user@short-hostname once SSH quits.
        echo -ne "\033]0;${USER}@${HOSTNAME%%.*}\007"
        # Or ${HOSTNAME} if short host names aren't your taste
        # Or echo -ne "\033]0;\007" if you don't want anything.
    }
    # Check to see if update terminal title is present?
    if ! echo $PROMPT_COMMAND | grep -q update_term_title
    then
       # This function is not found in PROMPT_COMMAND, add it
       PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }update_term_title"
    fi
fi
zapstar
sumber
1
Lol, saya bertanya-tanya siapa yang menulis jawaban ini ... ternyata itu saya :-)
zapstar