Como você altera o valor de TERM padrão definido no login do console (Ubuntu)?

6

O valor do shell $ TERM no padrão do Ubuntu é "xterm" para um login no console. Como posso alterá-lo para que o padrão seja "xterm-color"? Estou perguntando porque parece que esta é a maneira mais fácil de ativar o prompt de cores.

Estou ciente de que você pode redefinir o valor TERM no .bashrc ou outro script de login, mas prefiro apenas forçar o valor TERM a um padrão mais razoável.

    
por cmcginty 28.03.2010 / 03:30

2 respostas

9

A variável TERM armazena o nome de uma entrada no banco de dados terminfo que ajuda o SO a determinar como exibir informações em seu terminal. O que é padronizado depende inteiramente de como você efetuou login.

Normalmente, "o console" significa que você está fisicamente no computador, efetuando login em um dos terminais virtuais baseados em texto (VT1-6).

  • TERM padrão para linux (isso pode diferir entre distribuições; vt100 é uma alternativa segura)

    • Para mudar isso, no Ubuntu 9.10, você precisará ajustar o comando getty definido em /etc/init/tty1.conf . Isso mudará a configuração para / dev / tty1 (VT1), e você precisará fazer as mesmas alterações em /etc/init/tty2.conf , .. tty3.conf , etc para obter os outros terminais virtuais também.

      # original getty command in /etc/init/tty1.conf
      exec /sbin/getty -8 38400 tty1
      
      # new command; sets default TERM on /dev/tty1 to "foobar"
      exec /sbin/getty -8 38400 tty1 foobar
      

Se você estiver logado no X / Gnome / KDE (VT7, 8 ou 9), você não está usando um console, pelo menos neste contexto. Tecnicamente, isso é fazer o login no X e usar um pseudo-terminal através de um terminal emulador aplicação - é isso que lhe dá a janela que mostra o seu shell & linha de comando.

  • TERM é inicialmente definido pelo seu emulador de terminal. Ele pode ser modificado em seus arquivos de inicialização do shell ( ~ / .bashrc , ~ / .profile , etc).

    • xterm , rxvt , cor xterm , xterm-256color são todos valores comuns

    • Para alterar esse valor, consulte a documentação do emulador de terminal. Por exemplo, se estiver usando rxvt-unicode (também conhecido como urxvt ), você usaria a opção -tn termname da linha de comando.

Se você estiver logado remotamente (via SSH ou X remoto), você definitivamente não está usando um console em qualquer contexto; novamente, você está usando um pseudo-terminal .

  • TERM é herdado pelo programa que iniciou o SSH:
      O
    • SSH de um terminal virtual do linux resulta em um TERM linux ;
    • O SSH de uma linha de comando em um emulador de terminal X-windows resulta em um remoto TERM de qualquer TERM definido antes do comando SSH;
    • O SSH de um sistema Windows usando o PuTTY é padronizado para xterm , mas isso pode ser alterado na configuração do PuTTY;
    • e qualquer uma das configurações acima podem ser substituídas pelos arquivos de inicialização do shell do usuário remoto.
por 28.03.2010 / 04:50
2

Muita informação boa aqui:

man 7 term

A default TERM value will be set on a per-line basis by either /etc/inittab (Linux and System-V-like UNIXes) or /etc/ttys (BSD UNIXes). This will nearly always suffice for workstation and microcomputer consoles.

O próximo problema é que o Ubuntu 9.10 não possui /etc/inittab ou /etc/ttys .

man inittab

The Upstart init(8) daemon does not use this file, and instead reads its configuration from files in /etc/init. See init(5) for more details.

Olhando para / etc / init, você pode encontrar os arquivos tty * .conf. Eles são executados por exec'ing getty. Então:

man getty

term The value to be used for the TERM environment variable. This overrides whatever init(8) may have set, and is inherited by login and the shell.

Esta é uma boa informação. Agora sabemos que o valor TERM padrão vem do init (8)

... depois de tudo isso eu não consegui descobrir como alterar o valor TERM usado pelo init.

    
por 28.03.2010 / 04:23