sábado, 9 de novembro de 2013

Ajustes no terminal do Debian.

Não me perguntem por que, mas no Debian algumas funcionalidades são desabilitadas por padrão na linha de comando. Uma espiada nos scripts de configuração do bash e verá que pode deixar o ambiente um pouco mais agradável.

O bash tem alguns scripts que são executados imediatamente no login do usuário, que são:


/etc/profile
/etc/bash.bashrc

E o perfil do usário que é armazenado na sua pasta home:
~/profile
~/.bashrc

Os 2 primeiros são os arquivos principais, valem para todos os usuários. O arquivo /etc/profile estabelece algumas configurações e em seguida "invoca" o /etc/bash.bashrc. Repare, por exemplo que nas primeiras linhas do /etc/profile é estabelecido o path do sistema, se o UID do usuário for 0 (root) ele tem umas pastas a mais.

if [ "`id -u`" -eq 0 ]; then
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
    PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi

export PATH

 Em seguida ele invoca o arquivo "/etc/bash.bashrc", e todos os arquivo terminados com sh dentro da pasta "/etc/profile.d/", onde você pode criar arquivos de configuração a vontade.

No arquivo "/etc/bash.bashrc" você deve habilitar o bash completion, descomentando as linhas referentes à ele. Estranhamente o Debian é instalado com ele desabilitado. O bash completion é talvez o melhor recurso do shell. Ele faz a mágica da tecla TAB. Por exemplo, não é necessário digitar
"apt-get install isc-dhcp-server", pressionando o TAB ele completa os comandos e mostra os pacotes possiveis. Então é algo como "apt-g<TAB> i<TAB> isc<TAB>s<TAB>".

 Bom, acho que todos conhecem e abusam da funcionalidade, mas esta é uma daquelas coisas que é muito mais complicado explicar do que fazer, então mãos à obra.

Procure pelas seguintes linhas no arquivo e remova as "#":

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
         . /etc/bash_completion
fi

Com isso o bash completion estará habilitado para todos os usuários, para que a alteração tenha efeito é necessário fazer logout e login novamente.

Repare que o bash completion é tão "inteligente" que ele ele analisa o contexto do sistema para mostrar as possibilidades de complementação dos comandos. Por exemplo, se você não tem o pacote htop instalado e digitar "apt-get remove h<TAB><TAB>" ele não colocará o htop na lista pelo simples fato de ser um pacote que comece com H. Outro exemplo são os módulos. Ao digitar "modprobe <TAB><TAB>" ele mostrará todos os módulos disponíveis, mas se for para remover, "modprobe -r <TAB><TAB>" ele mostra apenas os módulos carregados.

Após executar o perfil global, bash executa o arquivo na sua pasta home, o "~/.profile", que executa o "~/.bashrc" em seguida. Outra coisa estranha é que o arquivo "~/.bashrc" do root é muito mais simples que o dos outros usuários. Como root abra os arquivos "~/.bashrc" e o arquivo "/etc/skell/.bashrc" e verá que o segundo ( que é a matriz para os usuários quando criados ) é bem diferente.
Eu gosto de renomear o arquivo original do root e copiar o segundo:

# mv ~/.bashrc ~/.bashrc.OLD
# cp /etc/skell/.bashrc ~/.bashrc

Dando uma olhada no "/etc/skell/.bashrc" você encontra algumas coisas interessantes, como alguns aliases úteis, prompt colorido e forçar alguns outros comandos a usarem cores também, o que é muito útil. É o caso do grep por exemplo, os termos ficam em destaque na saída do comando.
Voltando ao aquivo descomente as seguintes linhas:

...
#force_color_prompt=yes
...
if [ -x /usr/bin/dircolors ]; then
       test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
       alias ls='ls --color=auto'
       #alias dir='dir --color=auto'
       #alias vdir='vdir --color=auto'

        #alias grep='grep --color=auto'
       #alias fgrep='fgrep --color=auto'
       #alias egrep='egrep --color=auto'
fi

# some more aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

Você pode adicionar mais alguma coisa que goste. Eu particularmente sempre ponho:

alias cls=clear
alias df='df -h'
alias du='du -h'
alias free='free -m'

Desta forma, todo usuário criado a partir de então vai copiar o arquivo pronto na pasta "/etc/skell/" para o seu perfil. Para usuários já existentes, você pode abrir o arquivo "~/.bashrc" de cada um e editar, ou mesmo copiar a matriz para todos.

Repare que agora o shell fica mais agradável à cores, e você ficará até mesmo mal acostumado com o bash completion.

Nenhum comentário:

Postar um comentário