Hangi terminal türünü kullanıyorum?


51

Bunu hem Ubuntu 12.04 hem de Debian 7 ile test ettim.

echo $TERM

alırım

xterm

Ama eğer açılır menüden "help"> "about" kullanırsam yazıyor gnome terminal 3.4.1.1.

Bu sadece gnome-terminal kullandığım anlamına mı geliyor? Ya da sadece xterm? Veya gnome-terminal bir xterm uzantısı mıdır? Kafam karıştı.

Yanıtlar:


49

Ne $TERMiçin?

$TERMDeğişken o terminalin yeteneklerinden yararlanmak için uygulamalar tarafından kullanılmak içindir.

Örneğin, bir program renkli metni görüntülemek istiyorsa, önce kullandığınız terminalin renkli metni destekleyip desteklemediğini ve sonra eğer renkli metnin nasıl yapıldığını öğrenmelidir.

Bunun çalışması, sistemin bilinen terminallerin ve yeteneklerinin bir kütüphanesini tutmasıdır. Çoğu sistemde bu /usr/share/terminfovar (ayrıca termcap var, ancak artık fazla kullanılmayan bir miras).

Diyelim ki kırmızı metni görüntülemek isteyen bir programınız var. Temel olarak " xterm terminali için kırmızı metin için göndermem gereken bayt sırasını ver " yazan terminfo kütüphanesine çağrı yapar . Sonra sadece bu baytları alır ve yazdırır.
Bunu yaparak kendiniz deneyebilirsiniz tput setf 4; echo hi. Bu, setfterminfo kabiliyetine sahip olacak ve onu 4istediğiniz rengin olduğu bir parametresini geçecektir .


GNOME terminalinin kendisi neden yalan söylüyor:

Şimdi yeni piyasaya sürülmüş bazı yeni terminal emülatörlerine sahip olduğunuzu ve sistemin terminfo kütüphanesinin henüz bir tanımı olmadığını söyleyelim. Uygulamanız bir şeyi nasıl yapacağınızı aramaya başladığında, terminal bilinmediğinden başarısız olur.

Terminalinizin buralarda dolaşması, onun kim olduğu hakkında yalan söylemektir. Gnome terminaliniz " ben xterm " diyor.

Xterm, X11'in başlangıcından beri etrafta olan çok temel bir terminaldir ve bu nedenle çoğu terminal emülatörü, desteklediklerini desteklemektedir. GNOME terminalinin bir xterm olduğunu söyleyerek terminfo kütüphanesinde bir tanımı olması daha muhtemeldir.

Terminal türünüz hakkında söylenmenin olumsuz tarafı, terminalin aslında xterm'den çok daha fazlasını destekleyebilmesidir (örneğin, birçok yeni terminal 256 rengi desteklerken, eski terminaller yalnızca 16'yı desteklemektedir). Yani, bir takasınız, daha fazla özellik edinin veya daha fazla uyumluluğunuz var. Çoğu terminal daha fazla uyumluluk tercih eder ve bu nedenle kendileri olarak reklam vermeyi seçer xterm.

Bunu geçersiz kılmak istiyorsanız, birçok terminal davranışı yapılandırmanın bir yolunu sunacaktır. Ama sen de yapabilirsin export TERM=gnome-terminal.


4
Birine ihracat
öneriliyor

1
Evet. Gnome-terminal sol geliştiricilerinin iyi bir sebepten $TERMyola çıktığını tahmin ediyorumxterm
mulllhausen

4
@mulllhausen Bu sebep benim cevabımda iyi açıklanmış ...
Patrick

27

TERMDeğişkeni terminali gösterir türü değil, uç uygulama . TERMbelirli bir amacı vardır: bu terminalde çalışan uygulamalara terminal ile nasıl etkileşime gireceğini söyler.

Uygulamalar kaçış dizileri - yazdırılamayan karakterleri içeren ve imleci hareket ettirme, ekranın bir kısmını silme, geçerli rengin değiştirilmesi vb. Gibi karakter dizileri - yazarak uçbirimlerle etkileşime girer. kaçış dizileri kümeleri. Bu nedenle işletim sistemi, terminal tipleri ve karakteristiklerinin bir veri tabanını tutar. Geleneksel veri tabanı termcap (“TERMinal CAPabilities”); birçok modern sistem ve uygulama terminfoya geçmiştir . Her iki veritabanı da terminal tipinin adı ile indekslenir ve uygulamalar bunları TERMortam değişkenlerinden terminal tip adını kullanarak sorgular .

Günümüzde, çoğu terminal birkaç ortak uzantı kümesine sahip standart bir kaçış dizisi kümesi kullanır , bu nedenle birçok farklı değer görmezsiniz TERM. GUI terminal emülatörlerinin çoğu , geleneksel X terminali (hala kullanılıyor ve bakımı yapılan) xterm ile uyumludur .

Xterm'den farklı olan terminal emülatörleri, terminal veritabanına kendi adlarıyla kendi girişlerini ekleyebilir. Ancak bu uzak mermilerle iyi uyum sağlamıyor. Bir program makine A çalışan ancak A B ssh'dan atılması nedeniyle, örneğin, makine B görüntülendiğinde olan ihtiyacı gibi, SSH taşıma makine A uzaktan giriş yöntemleri terminal veri tabanını sorgulamak üzere TERMortam değişkeni, ancak Bu, yalnızca B'nin terminal veri tabanı aynı zamanda A'daki değer kullanıcısı için bir girişe sahip olduğunda yararlıdır. Bu nedenle, birçok TERM=xtermevrensel evrensel emülatörün çok fazla bilindiği bir yapı vardır.

Terminaller tarafından büyük veya büyük arasındaki fark, uygulamaların onlarla etkileşim biçiminden değil, terminallerin kullanıcıyla etkileşimde bulundukları ve ortamlarına uygun olmalarından kaynaklanmaktadır. Örneğin, Gnome Terminali Gnome'da iyi görünüyor ve sekmeler ve başka özellikler sunuyor; Konsole KDE'de iyi görünüyor ve sekmeler ve diğer çeşitler sunuyor; urxvt'nin küçük bir bellek gereksinimi vardır; Konsol2 Windows üzerinde çalışır; ekran ve tmux farklı üst terminallere eklenebilecek oturumlar sağlar; ve bunun gibi. Bu özelliklerin hiçbiri terminalde çalışan uygulamalarda fark yaratmadığından, çoğu terminal emülatörleri kullanır TERM=xterm.

Bir kabuğun hangi terminalde çalıştığını bulmak için kabuğun üst kısmına bakın:

ps -p$PPID

Koşmak ps -p$PPIDbana hangi terminalde çalıştığımı söylemiyor gibi görünüyor. Ya da en azından benim anladığım şekilde değil. Örnek bir çıktı / cevap var mı?
kullanıcı3731622

@ kullanıcısı Çıktı, bir demet sayı ve şifreli kısaltmalar ve ardından komut satırıdır. Çoğu durumda komut satırı, kabuğun çalıştığı terminal emülatörünü başlatan komut satırıdır.
Gilles 'SO- kötülük yapmayı bırak'

12

TERM ortam değişkeni, kullandığınız terminal anlamına gelmez.

Gnu.org'dan alıntı :

TERM ortam değişkeni, metin penceresinin yetenekleri için bir tanımlayıcı içerir. Referans olarak 'man 5 terminfo' kullanarak> 'infocmp' komutunu kullanarak bu kabiliyetlerin ayrıntılı bir listesini alabilirsiniz.

Gömülü renk direktifleriyle metin üretirken, msgcat TERM değişkenine bakar. Günümüzde metin pencereleri en az 8 rengi desteklemektedir. Bununla birlikte, genellikle, TERM değişkeni yalnızca 8 desteklenen rengi belirten bir tanımlayıcıya ayarlanmış olmasına rağmen, metin penceresi 16 veya daha fazla rengi destekler. Bu durumda TERM değişkenini farklı bir değere ayarlamanız faydalı olabilir:

xterm , çoğu durumda 16 renk desteği ile oluşturulmuştur. Ayrıca 88 veya 256 renk desteğiyle de oluşturulabilir (ancak her ikisi de değil). TERM'i xterm-16color, xterm-88color veya xterm-256color olarak ayarlamayı deneyebilirsiniz. rxvt

rxvt genellikle 16 renk desteği ile oluşturulmuştur. TERM'i rxvt-16color olarak ayarlamayı deneyebilirsiniz. konsole

Konsole de sık sık 16 renk desteği ile inşa edilmiştir. TERM'i konsole-16color veya xterm-16color olarak ayarlamayı deneyebilirsiniz.

TERM ayarını yaptıktan sonra, 'msgcat --color = test' işlevini çağırıp çıktının makul bir renk haritası gibi görünüp görünmediğini kontrol ederek doğrulayabilirsiniz. TERM ortam değişkeni, metin penceresinin yetenekleri için bir tanımlayıcı içerir. Referans olarak 'man 5 terminfo' kullanarak 'infocmp' komutunu kullanarak bu kabiliyetlerin ayrıntılı bir listesini alabilirsiniz.

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.