Terminal başlığını yol olmadan dizin adına otomatik olarak ayarlama


11

Şu anda bash terminalim / sekme başlığım bulunduğum dizine göre ayarlandı. Örneğin:

bob@bobscomputer:~/i/had/some/great/pie/yesterday

Yan yana açık birden fazla sekmem varsa, bu çok yararlı değildir. Örneğin, yukarıdaki dir yan yana açık 4 sekmeler varsa, tüm gördüğüm

bob@bobscomputer:~/i/had...

4 kere.

Tüm terminallerimin yolun sadece son kısmına otomatik olarak ayarlanmasını istiyorum. Yukarıdaki örnekte, başlığın

yesterday

Açıkçası, dizinleri değiştirdiğimde başlık değişmeli. Bunu istemimi değiştirmeden yapmak istiyorum, bu yüzden bilgi istemi ve terminal başlığı farklı olmalıdır.

Bunu yapmanın bir yolu var mı?


Yanıtlar:


12

Neden PS1 değişkeninizi değiştirmeden yapmak istiyorsunuz? Bunu yapmanın doğru yolu budur.

Aşağıdakileri çalıştırırsanız, istediğinizi alırsınız:

export PS1="\[\e]0;\W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

Bu sadece varsayılan istemi alıyor:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

... ve değiştirme \u@\h: \wile \W.

Aynı şeyi, doğru çıkış kodunu yansıtan herhangi bir komutla da yapabilirsiniz:

echo -en "\e]0;${PWD##*/}\a"

... ama sonra PS1'i (en iyi yol) kullanarak yapmasını durdurmak için sürekli bash ile savaşıyorsunuz.


2
Teşekkürler - PS1'in başlığı ve istemi bağımsız olarak ayarladığını fark etmemiştim. .Bashrc dosyamda xterm * | rxvt *) içindeki "$ TERM" durumunda PS1 = "[\ e] 0; $ {debian_chroot: + ($ debian_chroot)} \ W \ a] $ PS1" ayarladım ve tam olarak istediğimi yapıyor.
Kurbağa


3

Evet. Başına: PS1'inize \[\e]0;\W\a\]. Bu, istemlerinizin görünümünü değiştirmez, ancak terminal sekmelerinizin başlığını otomatik olarak geçerli çalışma dizininin adına ayarlar.

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.