SSH Oturumundan Sonra Terminal Sekmesi Başlığı


11

Mac OS X'te (10.6.8'deyim, ancak diğer sürümlerin aynı olduğuna inanıyorum) uzak bir makineye ssh'ing, Terminal'deki geçerli sekmenin başlığını değiştirir. Can sıkıcı bir şekilde, uzak bir makineyle bağlantıyı kesin olarak exitveya zaman aşımı ile ayırdığımda, sekmenin başlığı eski haline dönmez.

Neredeyse günlük olarak, bu neredeyse bir kalp krizi geçirmeme neden oluyor, bir komut veya başka bir komut yazarken, sadece gözümün köşesinden sekmenin hala user @ remotehost olarak adlandırıldığını görmek için. Ben her zaman bir pwdşey yapmadan önce konumumu onaylamak için vb eğilimindedir temkinli bir kullanıcı , ama yine de yaparken panik bir anda beni yakalar DROP DATABASE xve sekmesinde uzak ana bilgisayar adını görüyorum.

Uzun lafın kısası, uzak bir ana bilgisayarla bağlantıyı keserken bu başlığı geri almanın bir yolu var mı, yoksa bağlantıyı her sıfırladığımda yeni bir sekme açmakla başa çıkmak zorunda mıyım?


Terminal adları da çıktığınızda sıfırlanırnpm
Awesome_girl

Yanıtlar:


20

Bir ekleme PROMPT_COMMANDiçin senin .bash_profile

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

PROMPT_COMMANDİstemi isimli görüntülenen her zaman çalıştırılmaktadır.

Mevcut PROMPT_COMMANDortam değişkenini dahil ettiğimizi, mevcut ayarları kaybetmeyeceğimizi lütfen unutmayın (örn. update_terminal_cwd).


2
Kodunuzu değiştirmek yerine PROMPT_COMMAND dizinine eklediğinizden emin olun , örn PROMPT_COMMAND="<your code>; $PROMPT_COMMAND".; aksi takdirde, bu değişkeni kullanan diğer işlevleri devre dışı bırakırsınız. Örneğin, / etc / bashrc bunu terminalin geçerli çalışma dizinini ayarlamak için kullanır, böylece Terminal onu görüntüleyebilir ve çeşitli işlemler için kullanabilir.
Chris Page

@ChrisPage $PROMPT_COMMANDDiğer işlevlerin korunabilmesi için yeni kodun önceden gelmesi gerekiyor mu?
reve_etrange

Neden doğrudan PS1'e koymuyorsunuz?
Yongwei Wu

bu şekilde mi düzenliyorsunuz .bash_profile? sublime $HOME/.bash_profile?
Awesome_girl

@Awesome_girl sublKomutun yüklendiğinden emin olun ve ardından dosyayı terminalinizden düzenleyin subl ~/.bash_profile. Bu komut yoksa şu komutu uygulayın: sublimetext.com/docs/2/osx_command_line.html
XtraSimplicity

2

@ S01ipsist'in çözümünün ZSH (macOS'ta yeni kabuk) ile çalışmasını sağlamak için şunu ekleyebilirsiniz ~/.zshrc:

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOST}\007';$PROMPT_COMMAND"
precmd() { eval "$PROMPT_COMMAND" }

1

.bash_profileDosyanıza yapıştırmanız gerekenler . Bu çok daha temiz ve mevcut çalışma dizininizi güncellediğinde Apple'ın yaptığı yaklaşımı benimser. Değişkenin kontrolü update_term_titlezaten mevcut değildir (hiç kimsenin çağırmaması gibi bash -- login), sadece bir bekçi olarak mevcuttur.

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

1
Lol, bu cevabı kimin yazdığını merak ettim ... o ben oldum :-)
zapstar
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.