Gnome-Terminal zgłasza $ TERM jako „xterm”

21

W czystej instalacji Ubuntu 12.10 domyślny terminal gnome zgłasza $ TERM jako xterm, gdzie tak naprawdę powinien zgłaszać xterm-256color. Jak najlepiej to zmienić? Unikam umieszczania tego w moim .bashrc, ponieważ to tylko prosi o kłopoty.

Freddy
źródło
2
Chcesz wyjaśnić, dlaczego xterm się myli? Afaik, wszyscy mamy xterm. Poza tym: zadbaj również o wyjaśnienie, dlaczego włożenie tego do bashrc wymaga kłopotów?
Rinzwind
4
xtermjest źle, ponieważ większość aplikacji nie będzie działać w trybie 256 kolorów, chyba że jest to xterm-256colorlub screen-256color(najważniejsze są dla mnie vim i tmux). Podobnie jak @Freddy, wolałbym nie ustawiać ich w moim profilu powłoki, ponieważ być może łączę się z innego typu terminala niż SSH, i ponieważ tak naprawdę ustawieniem tego jest emulator terminala. Dziwi mnie, że terminal gnome nie zapewnia wielu emulacji.
Jim Stewart
3
vte-0.40 (który prawdopodobnie pojawi się w Ubuntu 15.10) zmienił wartość domyślną na xterm-256colors.
egmont

Odpowiedzi:

17

Zalecono, aby nie zmieniać skryptów uruchamiania, szczególnie ~/.bashrc. Wszelkie „terminal wykrywanie” za pomocą prądu $TERMlub $COLORTERMw ~/.profileto jedynie przypuszczenie, a może, jak pan powiedział, powodować problemy podczas korzystania z innych terminali (powiedzmy, szpachlówki lub xterm). Emulator terminala powinien zostać ustawiony $TERMi nie należy go zmieniać z poziomu powłoki.

Terminal Gnome, AFAIK, nie oferuje konfiguracji do zmiany TERM, ale pozwala zmienić polecenie uruchamiania, i to wszystko, czego potrzebujesz. Oto sztuczka:

Profile Preferences => Title and Command => Run a custom command instead of my shell

Następnie użyj następującego polecenia:

env TERM=xterm-256color /bin/bash

Po prostu zamień /bin/bashna preferowaną powłokę, jeśli jest inna. I nie, nie możesz użyć "$SHELL"w tym wierszu automatycznego wykrywania powłoki;) Musisz go na stałe zakodować

MestreLion
źródło
W tych ustawieniach dostępna jest opcja „Po wyjściu polecenia:”. Dostępne opcje to: „Wyjdź z terminala”, „uruchom ponownie polecenie” i „przytrzymaj terminal otwarty”. Który powinienem wybrać?
Caleb Jay
@CalebJay: cokolwiek wolisz, ta opcja nie jest związana z kolorami terminali. Co zrobić, gdy polecenie się skończy, jest wyłącznie kwestią preferencji.
MestreLion
12

Do połączenia z terminalem, który nie jest w stanie wykonać 256 kolorów.

O wiele lepiej byłoby wykryć terminal konkretnie $COLORTERM. Poszukaj gnome-terminal, xfce4-terminal itp., A następnie ustaw $TERMzmienną na xterm-256color.

Robię to z:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi
Jordania
źródło
4
Pamiętaj tylko, że Gnome Terminal od wersji 3.13 COLORTERMjuż się nie ustawia .
MestreLion
2
W przypadku wersji, które nie są już ustawione COLORTERM, możesz na nich polegać VTE_VERSION.
egmont
6

Chociaż prawdą jest, że terminfo ma xterm + 256color ( /usr/share/terminfo/x/xterm+256color), termcap ma tylko xterm ( /usr/share/vte/termcap/xterm), więc zmiana $TERMnie powinna być wskazana.

W każdym razie $TERMnie jest ustawiony przez gnome-terminal, ale przez vte. Domyślną wartość tej zmiennej środowiskowej można zmienić w czasie kompilacji (dając opcję skryptowi konfiguracji) lub przez wywołanie vte_pty_set_term()funkcji. Patrząc na źródła gnome-terminal, widzę, że vte_pty_set_termnigdy nie jest wywoływany, więc mogę powiedzieć, że nie ma możliwości modyfikacji $TERMprzez edycję ustawień gnome-terminal.

Co musisz zrobić, to umieścić następujący fragment kodu w swoim ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi
Andrea Corbellini
źródło
==jest składnią opartą tylko na bashu, nie używaj jej w przypadku fragmentów przeznaczonych do pozyskiwania sh(co ma miejsce ~/.profilew DE). Również składnia „x $ ..” nie jest potrzebna, ponieważ poprawnie cytujesz rozszerzenie var.
MestreLion
@MestreLion: możesz edytować moje pytanie.
Andrea Corbellini
Próbowałem, ale AU wymaga zmian o więcej niż 6 znaków, stąd komentarz
MestreLion