Jak ustawiona jest domyślna wartość zmiennej powłoki TERM?
13
Po aktualizacji do Maverick mam zmienną TERM ustawioną na „głupi”, nie dzieje się tak w przypadku tego samego katalogu domowego uruchomionego z Lucid i nie zmieniłem ręcznie niczego związanego z TERM.
Aby rozwinąć to, co mówi Gilles, załóżmy, że zdalnie łączysz się z Ubuntu z Windows za pomocą Putty.
W opcjach konfiguracji kitu w obszarze Połączenie-> Dane znajduje się ustawienie o nazwie ciąg terminala. Możesz ustawić TERM tam, a kit instruuje SSH, aby ustawił tę zmienną środowiskową. W pewnym momencie twoja powłoka zostanie uruchomiona, prawdopodobnie / bin / bash i pobiera swoje środowisko z procesu nadrzędnego, prawdopodobnie z procesu sshd.
To samo dotyczy ssh ze zdalnego Linux-a, po prostu lokalna zmienna środowiskowa TERM jest przekazywana przez ssh do zdalnego połączenia.
W przypadku emulatora terminala zadaniem emulatora terminala jest ustawienie zmiennej środowiskowej TERM. np. getty ustawia TERM na „linux” i forksuje proces powłoki (/ bin / bash). lub gnome-terminal ustawia TERM na „xterm” i forksuje proces powłoki.
Sprawdziłem i gnome-terminal działa dobrze, to naprawdę błąd „emulatora”. Używam terminatora. Dzięki
João Pinto
9
Aby dosłownie odpowiedzieć na twoje pytanie, należy ustawić emulator terminala $TERM.¹
Rozwiązanie problemu wymagałoby przynajmniej znajomości używanego emulatora terminala. To może być błąd lub błąd konfiguracji w emulatorze terminala lub problem z plikami Twojego Uruchamianie powłoki (prawdopodobnie ~/.bashrc, ale być może ~/.bash_profile, /etc/bashrc, /etc/profile, ...).
¹ Zakładając, że nie używasz terminala sprzętowego; wtedy byłby to argument gettywywołany z inittab(starsze wersje korzystające z SysVinit) lub /etc/init/tty*.conf(Ubuntu ≥9.10, korzystające z Upstart).
getty nie jest wywoływane z inittab, Ubuntu nie ma już inittab! Konsole są zdefiniowane przez /etc/init/tty*.conf
LassePoulsen
4
Myślę, że dostajesz odznakę za pierwsze użycie przypisów w odpowiedzi :-)
poolie
teraz, gdy jest już 15.04+, upstart już nie jest już domyślny (ponownie) i systemd obsługuje go w usłudze getty @, wciąż przyzwyczajam się do tej zmiany (to się dzieje, kiedy dowiedziałem się wszystkiego o rozpoczęciu i rozpoczęciu pracy, teraz mam zrobić to samo z systemd ... meh !!)
osirisgothra
1
Jeśli chcesz zmienić terminal, sprawdź funkcjonalność alternatywy aktualizacji.
Na przykład:
update-alternatives --config x-terminal-emulator
Wiele różnych domyślnych opcji systemu w Ubuntu jest ustawianych za pomocą tej metody. Innym popularnym jest przeglądarka internetowa
Aby dosłownie odpowiedzieć na twoje pytanie, należy ustawić emulator terminala
$TERM
.¹Rozwiązanie problemu wymagałoby przynajmniej znajomości używanego emulatora terminala. To może być błąd lub błąd konfiguracji w emulatorze terminala lub problem z plikami Twojego Uruchamianie powłoki (prawdopodobnie
~/.bashrc
, ale być może~/.bash_profile
,/etc/bashrc
,/etc/profile
, ...).¹ Zakładając, że nie używasz terminala sprzętowego; wtedy byłby to argument
getty
wywołany zinittab
(starsze wersje korzystające z SysVinit) lub/etc/init/tty*.conf
(Ubuntu ≥9.10, korzystające z Upstart).źródło
Jeśli chcesz zmienić terminal, sprawdź funkcjonalność alternatywy aktualizacji.
Na przykład:
Wiele różnych domyślnych opcji systemu w Ubuntu jest ustawianych za pomocą tej metody. Innym popularnym jest przeglądarka internetowa
źródło