(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

91. Configuração de Software

Vamos personalizar os seguintes arquivos: /etc/profile /etc/bashrc ,.bashrc, .bash_profile, .inputrc, .less, .lessrc, .xinitrc, .fvwmrc, .fvwm2rc95, .Xmodmap, .Xdefaults, .jedrc., .abbrevs.sl, .joerc e .emacs . Novos usuários não devem ser acrescentados até que se tenha completada a configuração do sistema. Os arquivos dot serão colocados em /etc/skel.

91.1 bash(1)

Para se adaptar o comportamento do interpretador de comandos bash, estes são os principais arquivos a serem editados:

  • /etc/bashrc: contém um amplo sistema de funções e nomes alternativos;
  • /etc/profile: contém um sistema amplo de itens de ambiente e programas de inicialização;
  • $HOME/.bashrc: contém nomes alternativos de usuários e funções;
  • $HOME/.bash_profile: contém itens de ambiente do usuário e programas de inicialização;
  • $HOME/.inputrc: contém as chaves de ligações e outros bits.

Exemplos destes arquivos são mostrados a seguir. Primeiro e mais importante: /etc/profile. É usado para configurar muitas características de uma máquina Linux, como se pode ver nas seguintes seções:


# /etc/profile
# Ambiente global do sistema e programas de inicialização
# Funções e apelidos são definidos em /etc/bashrc
#
# Este arquivo estabelece as seguintes características:
#
#   o caminho
#   o indicador da linha de comandos
#   algumas variáveis de ambiente
#   as cores do comando ls
#   o comando less
#
# Os usuários podem alterar estas configurações e/ou acrescentar outras nos 
# arquivos $HOME/.bash_perfil
#
# estabelecendo um caminho adequado

echo $PATH | grep X11R6 > /dev/null
if [ $? = 1 ] ; then   # adicionando entradas ao PATH
  PATH="$PATH:/usr/X11R6/bin:$HOME/bin:."
fi

# notificar o usuário: ambiente ou ausência de um nos acessos. Caso haja um 
# interpretador de comandos, então o indicador será azul;
# senão será magenta. O indicador de superusuário será vermelho.

USER=`whoami`
if [ $LOGNAME = $USER ] ; then
  COLOUR=44
else
  COLOUR=45
fi

if [ $USER = 'root' ] ; then
  COLOUR=41
fi

# utilizar um caractere de fuga real ao invés de ^[. Para fazer isto:
# emacs: ^Q ESC   vi: ^V ESC   joe: ` 0 2 7   jed: ` ESC
# Remover `;1' caso não se queira utilizar "negrito".
ESC=^[
PS1='$ESC[$COLOUR;37;1m$USER:$ESC[37;40;1m\w\$ '
PS2="Continue> "

# por favor, sem arquivos de erro de kernel

ulimit -c 0   

# configurando a umask

if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then
  umask 002
else
  umask 022
fi

# algumas variáveis
USER=`id -un`
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
EDITOR=jed
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
HISTFILESIZE=1000
export PATH PS1 PS2 USER LOGNAME MAIL EDITOR HOSTNAME HISTSIZE HISTFILESIZE

# comando ls em cores

eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -s -T 0 --color=tty'

# personalizar o less

LESS='-M-Q'
LESSEDIT="%E ?lt+%lt. %f"
LESSOPEN="| lesspipe.sh %s"
VISUAL=jed
LESSCHARSET=latin1
export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET

for i in /etc/profile.d/*.sh ; do
  if [ -x $i ]; then
    . $i
  fi
done

Este é uma exemplo do arquivo /etc/bashrc:


# /etc/bashrc
# Sistema de funções amplas e nomes alternativos
# Itens ambientais entram em /etc/profile

alias which="type -path"
alias d="ls"
alias dir="d"

Este é um exemplo do arquivo .bashrc:


# $HOME/.bashrc
# Fonte de definições globais 

if [ -f /etc/bashrc ]; then
  . /etc/bashrc
fi

# isto é necessário para notificar o usuário que ele está em um 
# ambiente de trabalho sem acesso à execução de comandos

if [ "$GET_PS1" = "" ] ; then
  COLOUR=45

# colocar um caracter de saída real ao invés de ^[
  ESC=^[
  PS1='$ESC[$COLOUR;37m`whoami`:$ESC[37;40m\w\$ '
  export PS1
fi

# Nomes alternativos

alias cp='cp -i'
alias l=less
alias lyx='lyx -width 900 -height 700'
alias mv='mv -i'
alias rm='rm -i'
alias x=startx

# Algumas funções úteis

inst()        # Instalar um arquivo .tar.gz no diretório atual.
{ gzip -dc $1 | tar xvf - }

lz()          # Listar o conteúdo de um arquivo .zip.
{ unzip -l $* }

lgz()        # Listar o conteúdo de um arquivo .tar.gz.
{
  for file in $* ; do
    gzip -dc ${file} | tar tf -
  done
}

tgz()        # Criar um arquivo .tgz com zip
{
  name=$1 ; tar -cvf $1 ; shift
  tar -rf ${name} $*
  gzip -S .tgz ${name}
}

Este é um exemplo do arquivo .bash_profile:


# $HOME/.bash_profile
# Uso de variáveis específicas e programas de inicialização
# Este arquivo contém configurações definidas pelo usuário que alteram
# aquelas presentes em /etc/profile

# Obtendo os nomes alternativos e as funções

if [ -f ~/.bashrc ]; then
  GET_PS1="NO"  # não altera as cores do indicador de linha de comandos
  . ~/.bashrc
fi
    
# estabelecendo alguns diretórios `padrões'
# exemplos que devem ser adaptados ao sistema do usuário 

export CDPATH="$CDPATH:$HOME:$HOME/texto:$HOME/texto/geologia"

# arrumando a tecla de retorno do rxvt 2.45
if [ "$COLORTERM" != "" ] ; then
  stty erase ^?
  ESC=^[             # usa um caracter real de fuga ao invés de ^[
  echo -n "$ESC[36l"
fi

Este é um arquivo de exemplo do .inputrc:


# $HOME/.inputrc

# chaves de ligação
"\e[1~": início de linha
"\e[3~": apagar caracter
"\e[4~": fim de linha
# (F1 .. F5) são "\e[[A" ... "\e[[E"
"\e[[A": "info \C-m"

set bell-style visible          # sem som
set meta-flag On                # permite entradas de 8-bits (ou seja
                                # caracteres acentuados)
set convert-meta Off            # não separa caracteres de 8 bits
set output-meta On              # lista caracteres de 8 bits corretamente
set horizontal-scroll-mode On   # rola linhas de comandos longos
set show-all-if-ambiguous On    # após a tecla TAB ser pressionada 

Para fazer as teclas de retorno e apagar funcionarem corretamente em xterm e outros aplicativos X11, faz-se necessária a aplicação do seguinte roteiro:

  • colocar em .xinitrc:
    usermodmap=$HOME/.Xmodmap
    xmodmap $usermodmap
    
  • colocar em .Xmodmap:
    keycode 22 = BackSpace
    keycode 107 = Delete
    
    Isto corrige o console. Para acertar o xterm:
  • colocar em .Xdefaults:
    xterm*VT100.Translations: #sobrepõem-se a <Key>BackSpace: string(0x7F)\n\
            <Key>Delete:        string(0x1b) string("[3~")\n\
            <Key>Home:          string(0x1b) string("[1~")\n\
            <Key>End:           string(0x1b) string("[4~")\n\
            Ctrl<Key>Prior:     string(0x1b) string("[40~")\n\
            Ctrl<Key>Next:      string(0x1b) string("[41~")
    
    nxterm*VT100.Translations: # sobrepõem-se a <Key>BackSpace: string(0x7F)\n\
            <Key>Delete:        string(0x1b) string("[3~")\n\
            <Key>Home:          string(0x1b) string("[1~")\n\
            <Key>End:           string(0x1b) string("[4~")\n\
            Ctrl<Key>Prior:     string(0x1b) string("[40~")\n\
            Ctrl<Key>Next:      string(0x1b) string("[41~")
    

rxvt é um pouco mais complicado, já que algumas das opções em tempo de compilação alteram o seu comportamento. Vide o .bash_profile acima.

Mais informações podem ser encontradas nas páginas de manual on-line de bash(1) e readline(3).

91.2 ls(1)

O ls pode mostrar uma lista de diretórios usando cores para realçar os diferentes tipos de arquivos. Para capacitar estas características, acrescente as seguintes linhas ao arquivo /etc/profile:

eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -T 0 --color=tty'

(Caso o arquivo /etc/DIR_COLORS não exista, deve ser removida a referência a ele na primeira linha). Isto estabelece a variável de ambiente LS_COLORS que contém a lista de cores configurada em /etc/DIR_COLORS. Nota: isto não funciona com versões do rxvt anteriores à 2.21. Ao invés disso pode ser usado o xterm . Parece que rxvt tem um problema, que não permite herdar o ambiente corretamente em algumas circunstâncias.

O ls da Caldera não tem cores, mas há um equivalente color-ls, que pode ser acrescentado ao arquivo /etc/bashrc:

alias ls="color-ls $LS_OPTIONS"

91.3 less(1)

Com este excelente paginador é possível folhear não apenas arquivos de texto puro, mas também arquivos compactados no formato gzip, arquivos zip e tar, páginas do manual e o que mais se tiver. Sua configuração envolve alguns passos:

  • para usá-lo com as teclas de movimento, deve-se ter o seguinte arquivo em formato ASCII puro chamado .lesskey no diretório pessoal do usuário:
    ^[[A   back-line
    ^[[B   forw-line
    ^[[C   right-scroll
    ^[[D   left-scroll
    ^[OA   back-line
    ^[OB   forw-line
    ^[OC   right-scroll
    ^[OD   left-scroll
    ^[[6~  forw-scroll
    ^[[5~  back-scroll
    ^[[1~  goto-line
    ^[[4~  goto-end
    ^[[7~  goto-line
    ^[[8~  goto-end
     
    
    e executar-se o comando lesskey. Isto criará um arquivo binário .less contendo as construções de teclas.
  • deve-se escrever o seguinte arquivo como /usr/bin/lesspipe.sh:
    #!/bin/sh
    # Este é um pré-processador para "less". É usado quando a variável de ambiente
    # estiver configurada da seguinte forma: LESSOPEN="|lesspipe.sh %s"
     
    lesspipe() {
      case "$1" in
      *.tar) tar tf $1 2>/dev/null ;; # verifica o conteúdo de arquivos .tar e .tgz 
      *.tgz|*.tar.gz|*.tar.Z|*.tar.z) tar ztf $1 2>/dev/null ;;
      *.Z|*.z|*.gz) gzip -dc $1  2>/dev/null ;; # verifica arquivos comprimidos
      *.zip) unzip -l $1 2>/dev/null ;; # verifica arquivos comprimidos
      *.arj) unarj -l $1 2>/dev/null ;;
      *.rpm) rpm -q -p -i -l $1 2>/dev/null ;;
      *.cpio) cpio --list -F $1 2>/dev/null ;;
      *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1`
        FILE=`echo $FILE | cut -d ' ' -f 2`
        if [ "$FILE" = "troff" ]; then
          groff -s -p -t -e -Tascii -mandoc $1
        fi ;;
      *) file $1 | grep text > /dev/null ;
        if [ $? = 1 ] ; then # não é um arquivo texto
          strings $1
        fi ;;
      esac
    }
    
    lesspipe $1
    

    e deve ser tornado executável através do comando chmod 755 lesspipe.sh.
  • colocar as seguintes linhas em /etc/profile:
    LESS="-M-Q"                     # comando longo, silêncio
    LESSEDIT="%E ?lt+%lt. %f"       # editar a linha superior
    LESSOPEN="| lesspipe.sh %s"     # filtro
    VISUAL=jed                      # editor padrão---inserir o favorito
    LESSCHARSET=latin1              # mostrar as letras acentuadas, se necessário
    export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET
    
    A variável LESSCHARSET depende do fato de eu morar na Itália e querer usar o caractere ISO 8859/1. Aos companheiros americanos, japoneses, russos, etc. não aconselho o seu uso.

91.4 emacs(1)

Não uso o emacs, por isso tenho somente um conselho para dar. Algumas distribuições do emacs não vêm pré-configuradas para cores e realce de sintaxe. Deve-se então inserir o seguinte no arquivo .emacs:

(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)

Isto funciona somente no X11. Deixo para o usuário a tarefa de examinar a documentação do emacs para descobrir como adaptá-la às suas necessidades -- potencialmente isso pode levar meses de programação...

91.5 joe(1)

Algumas pessoas relataram que o editor joe funciona com cores em X11, mas não em terminais tty. Além disso, algumas teclas especiais não funcionam. Até onde eu saiba, ninguém descobriu a solução para o pequeno incômodo anterior.

Caso este seja um problema para o leitor, uma solução rápida e deselegante, é a seguinte:

~$ export TERM=vt100
~$ joe arquivo (edita o arquivo)
~$ export TERM=linux

91.6 jed(1)

Este é o meu editor favorito: ele faz o que eu preciso, é mais leve e mais fácil de configurar que o emacs e em minha opinião emula outros editores superiores. Muitos usuários em minha universidade querem jed para emular o EDT, o editor de sistemas VMS.

Os arquivos de configuração do jed são chamados .jedrc e /usr/lib/jed/lib/*; o anterior pode ser adaptado de jed.rc.

  • para fazer com que o jed use as teclas especiais corretamente, deve-se gravar o arquivo /usr/lib/jed/lib/padrões.sl cuja única linha é:
    () = evalfile("linux");
    
  • editar o arquivo /usr/lib/jed/lib/linux.sl, remover o comentário da linha que diz Info_Directory = "/usr/info"; e acrescentar /bin/mail após UCB_Mailer =;
  • para fazer com que jed emule o EDT (ou outros editores) há que se editar algumas linhas do .jedrc. Caso se queira utilizar uma plataforma numérica '+' para apagar as palavras, ao invés de um único caractere, o seguinte conteúdo deve ser acrescentado ao .jedrc:
    unsetkey("\eOl");
    unsetkey("\eOP\eOl");
    setkey("edt_wdel", "\eOl");
    setkey("edt_uwdel", "\eOP\eOl");
    
    depois da linha onde se lê () = evalfile("edt");.
  • para fazer com que xjed use a plataforma numérica para emulação EDT, deve ser inserido o seguinte em .Xmodmap:
    keycode 77  = KP_F1
    keycode 112 = KP_F2
    keycode 63  = KP_F3
    keycode 82  = KP_F4
    keycode 86  = KP_Separator
    
    Além disso, deve-se estar seguro de que o arquivo /etc/X11/XF86Config contém as seguintes linhas:
    #    ServerNumLock  # devem estar comentados 
         XkbInativo
    
    Isto se aplica ao XFree 3.2. A menos que se use um teclado de padrão americano, o 'XkbInativo' pode trazer alguns pequenos problemas.
  • a personalização de cores para xjed é feita pelo acréscimo de linhas como estas em .Xdefaults:
    xjed*Geometry: 80x32+150+50
    xjed*font: 10x20
    xjed*background: midnight blue
    
  • a característica de ``abreviação'' é um economizador de tempo de extremo valor. Para usá-la deve-se escrever um arquivo como o seguinte conteúdo em $HOME/.abbrevs.sl:
    create_abbrev_table ("Global", "");
    define_abbrev ("Global", "GG", "Guido Gonzato");
    create_abbrev_table ("TeX", "\\A-Za-z0-9");
    define_abbrev ("TeX", "\\beq", "\\begin{equation}");
    define_abbrev ("TeX", "\\eeq", "\\end{equation}");
    % e assim por diante... 
    
    e a seguir digitar ESC x abbrev_mode para habilitá-lo. Para se ter a abreviação por padrão, devem ser acrescentadas as seguintes entradas em .jedrc:
    define text_mode_hook ()
    {
      set_abbrev_mode (1);
    }
    %
    define fortran_hook ()
    {
      set_abbrev_mode (1);
      use_abbrev_table ("Fortran");
    }
    % e assim por diante...
    

91.7 efax(1)

Este pacote é provavelmente o mais conveniente para o envio e recebimento de faxes. Deve-se adaptar o programa /usr/bin/fax nos seguintes parâmetros:

  • DIALPREFIX: as chances de se colocar `T' ou `P' e ele não funcionar em diversos países é grande. Ao invés disso deve-se usar 'ATDT' caso a linha telefônica disponível funcione com tom ou 'ATDP' caso ela funcione através de pulsos;
  • INIT e RESET: estas linhas contêm os inicializadores `-i' e `-k', necessários para o efax. Caso se queira acrescentar o comando AT, isto deve ser feito na linha apropriada, precedendo o restante com `-i' ou com `-k'. Por exemplo: para acrescentar o comando `ATX3' a INIT, deve-se usar `-iX3'.

91.8 TeX e Amigos

Presumindo-se que se tenha acesso à uma distribuição do teTex, nestes casos:

  • para configurar o padrão de hifenização para o idioma desejado, deve ser editado o arquivo /usr/lib/texmf/texmf/tex/generic/config/language.dat, da seguinte forma:
    ~# texconfig init ; texconfig hyphen
    
  • ao se acrescentar um pacote LaTeX, deve ser executado o comando texhash em /usr/lib/texmf/texmf/tex/latex/, a fim de que o teTex reconheça o novo pacote;
  • para adaptar o dvips, o arquivo a ser editado é /usr/lib/texmf/texmf/dvips/config/config.ps. Deve-se estar atento ao fato de que os campos relativos à resolução padrão também afetam o comportamento do xdvi. Ao se vivenciar tentativas irritantes de se criar fontes a cada vez que ele seja executado, pode-se acrescentar a seguinte linha:
    XDvi*mfmode:
    
    em .Xdefault. Isto deve resolver o problema.

91.9 PPP

Assumindo-se que o kernel tenha o suporte compilado a PPP + TCP/IP, a interface local de rede esteja habilitada, o pacote pppd esteja disponível e corretamente instalado e que o acesso como superusuário está disponível, pode-se seguir as instruções aqui mencionadas. Obviamente, o PSI - Provedor de Serviços Internet, deverá suportar conexões PPP.

Existem duas maneiras para configurar o PPP: a) configuração manual; b) um programa de configuração automática.

Qualquer opção escolhida, necessita das seguintes informações:

  • o número de telefone do PSI;
  • o nome do servidor do PSI;
  • o servidor de notícias e correio do PSI;
  • o domínio do PSI;
  • o nome de usuário e senha.

A configuração manual é um trabalho penoso, pois trata da edição de arquivos e da gravação de programas. Não é muito trabalhosa, mas é fácil cometer-se erros, sendo que iniciantes podem facilmente se intimidar. O COMO FAZER PPP está à disposição para sanar as dúvidas mais comuns. Alternativamente, existem ferramentas que pedem as informações acima e fazem todo o trabalho.

Certamente uma saída pode residir em se pedir suporte a quem já esteja conectado ou na utilização de uma das seguintes ferramentas:

91.10 Cliente POP

Para recuperar a correspondência de um servidor POP, pode-se usar um cliente POP como fetchpop ou fetchmail. O último é mais avançado e é provavelmente a única opção caso o servidor PPP do PSI não reconheça o comando "LAST". Eles estão disponíveis em ftp://metalab.unc.edu/pub/Linux/system/mail/pop.

Para se configurar estes clientes deve-se observar o seguinte:

  • fetchpop: na primeira vez em que for executado será necessário fornecer algumas informações. Responda às perguntas e o programa poderá ser prontamente utilizado.
  • fetchmail: deve se adaptar o seguinte exemplo de .fetchmailrc:
    # $HOME/.fetchmailrc
    poll mbox.myisp.com with protocol pop3;
      user didi there with password _Loo%ny is didi here 
     
    
    Devem ser configuradas as permissões para este arquivo com o comando chmod 600 .fetchmailrc, senão fetchmail não poderá ser executado. Este exemplo é bastante básico e assume que se tenha um arquivo sendmail disponível. Existem infinitas possibilidades de configuração, que podem ser verificadas em http://www.ccil.org/~esr/fetchmail.

91.11 Sistema X Window

Uma vez que o X Window esteja funcionando (placa de vídeo certa, etc.), existem infinitas possibilidades de configuração, dependentes do gerente de janelas que se esteja utilizando. De qualquer maneira, a tarefa se resume na edição de um ou mais arquivos ASCII no diretório pessoal. Quanto ao gerente de janelas:

  • fvwm: deve-se copiar o arquivo /etc/X11/fvwm/system.fvwmrc para o diretório pessoal com o nome de .fvwmrc, analisar o seu conteúdo e iniciar um processo de experimentação. O arquivo system.fvwmrc é na minha opinião muito simples e não faz justiça a fvwm.
  • fvwm95-2: deve-se copiar o arquivo /etc/X11/fvwm95-2/fvwm2rc95 para o diretório pessoal com o nome de .fvwm2rc95, o qual deve ser editado a seguir. O exemplo padrão é uma contribuição muito boa.
  • TheNextLevel: este é um gerenciador de janelas bem mais difícil de configurar. Deve-se copiar o arquivo /etc/X11/TheNextLevel/.* para o diretório pessoal, observar-se o seu conteúdo e personalizá-lo. O primeiro item é denominado .fvwm2rc.defines.

Além disso, certifique-se que há um arquivo .xinitrc próprio. Por exemplo:

#!/bin/sh

# $HOME/.xinitrc

# estabelecendo algumas teclas corretamente

usermodmap=$HOME/.Xmodmap 
xmodmap $usermodmap

xset s noblank  # desliga o salvador de tela
xset s 300 2    # salvador de tela inicia depois de 5 minutos 
xsetroot -solid "medium blue" &
 
# o rxvt salva muita memória, mas versões anteriores a  2.21 têm problemas
# que afetam as teclas e a maneira pela qual o ambiente é herdado. Deve ser  
# atualizada ou substituída pelo xterm.

xterm -ls -bg black -fg white -sb -sl 500 -j -ls -fn 10x20 -fb 10x20bold \
-title "Color xterm" -geometry 80x25+150+0 &

fvwm95-2
 

91.12 Fortran

Na minha experiência, caso se precise de Fortran, uma boa alternativa para g77 é o tradutor Fortran para C f2c e a interface yaf77.

Pode-se obter yaf77-X.Y.tgz a partir de ftp://metalab.unc.edu/pub/Linux/devel/lang/fortran .

91.13 Configurações dos Usuários

É aconselhável que novos usuários tenham alguns arquivos de configuração prontos quando eles forem criados no sistema. Devem ser colocados os seguintes arquivos no diretório /etc/skel: .bashrc .bash_profile .bash_logout .inputrc .less .xinitrc .fvwmrc .fvwm2rc95 .Xmodmap .Xdefaults .jedrc .abbrevs.sl. joerc .emacs

Note-se que o .pinerc não pode ser completamente adaptado. Certifique-se que pelo menos os campos user-domain, smtp-server e nntp-server estejam propriamente configurados.

91.14 Atualização

Ao se atualizar uma máquina, lembre-se de salvar antes alguns arquivos adicionais. Alguns deles são: /etc/X11/XF86Config, /usr/bin/fax, ...


Página seguinte Página anterior Índice