Como o valor da variável de shell TERM padrão é definido?
13
Após a atualização para o Maverick, tenho minha variável TERM definida como 'burra', isso não acontece com o mesmo diretório inicial que está sendo executado no Lucid e eu não alterei manualmente nada relacionado ao TERM.
Alguma idéia de onde a variável TERM deve ser definida?
Para elaborar o que Gilles diz, suponha que você esteja se conectando remotamente ao seu ubuntu a partir do Windows usando o Putty.
Nas opções de configuração da massa, em Conexão-> Dados, há uma configuração chamada string do tipo terminal. Você pode definir seu TERM lá e o putty instrui o SSH para definir essa variável de ambiente. Em algum momento depois disso, seu shell será executado, provavelmente / bin / bash e obterá seu ambiente a partir do processo pai, provavelmente o processo sshd.
O mesmo vale se você ssh de uma caixa Linux remota, é apenas que a variável de ambiente TERM local é passada através de ssh para a conexão remota.
No caso de um emulador de terminal, é tarefa do emulador de terminal definir a variável de ambiente TERM. por exemplo, getty define TERM como "linux" e bifurca um processo de shell (/ bin / bash). ou o gnome-terminal define TERM como "xterm" e bifurca um processo de shell.
Eu verifiquei e o gnome-terminal funciona bem, é realmente um bug do "emulador". Eu estou usando terminator. Obrigado
João Pinto
9
Para responder sua pergunta literalmente, o emulador de terminal deve ser configurado $TERM.
Para resolver seu problema, é necessário pelo menos saber qual emulador de terminal você usa. Poderia ser um bug ou errada no emulador de terminal ou um problema com arquivos de seu shell de inicialização (provavelmente ~/.bashrc, mas, possivelmente ~/.bash_profile, /etc/bashrc, /etc/profile, ...).
¹ Supondo que você não esteja usando um terminal de hardware; então seria o argumento para getty, chamado from inittab(releases mais antigos usando o SysVinit) ou /etc/init/tty*.conf(Ubuntu ≥9.10, usando Upstart).
getty não é chamado de inittab, o Ubuntu não tem mais um inittab! Os consoles são definidos por /etc/init/tty*.conf
LassePoulsen
4
Eu acho que você obter um emblema para o primeiro uso que eu vi de notas de rodapé em uma resposta :-)
poolieby
agora que é 15.04+ upstart não é mais o padrão (novamente) e o systemd lida com o serviço getty @, ainda estou me acostumando com essa alteração (ela aparece depois que aprendi tudo sobre upstart dentro e fora, agora tenho fazer o mesmo com systemd ... meh !!)
osirisgothra
1
Se você deseja alterar o terminal, verifique a funcionalidade de atualização de alternativas.
Por exemplo:
update-alternatives --config x-terminal-emulator
Muitas das várias opções padrão do sistema no Ubuntu são definidas por esse método. Outro comum seria um navegador www
Para responder sua pergunta literalmente, o emulador de terminal deve ser configurado
$TERM
.Para resolver seu problema, é necessário pelo menos saber qual emulador de terminal você usa. Poderia ser um bug ou errada no emulador de terminal ou um problema com arquivos de seu shell de inicialização (provavelmente
~/.bashrc
, mas, possivelmente~/.bash_profile
,/etc/bashrc
,/etc/profile
, ...).¹ Supondo que você não esteja usando um terminal de hardware; então seria o argumento para
getty
, chamado frominittab
(releases mais antigos usando o SysVinit) ou/etc/init/tty*.conf
(Ubuntu ≥9.10, usando Upstart).fonte
Se você deseja alterar o terminal, verifique a funcionalidade de atualização de alternativas.
Por exemplo:
Muitas das várias opções padrão do sistema no Ubuntu são definidas por esse método. Outro comum seria um navegador www
fonte