terminalOntem tive uma duvida, quando logava em um ssh via putty, num cliente para manutenção de ambiente do TraceGP, não estava sendo executado o arquivo .bashrc que continha algumas variaveis de ambiente definida.

Achei estranho, mas, como eu não sou sysdamin, e estava acostumado com meu Arch em casa mesmo, achei estranho este arquivo não ser carregado.

Pois bem, dei uma lida no Foca Linux e achei a resposta aqui.

Acontece que: quando logamos em um terminal no linux, alguns arquivos são executados em uma certa sequencia, dependendo se o terminal necessita de login ou não:

Com Login necessário:

  1. /etc/profile (para todos os usuarios)
  2. ~/.bash_profile ( ou ~/.profile para root)

Sem login necessário ( uma sessão do X por exemplo )

  1. /etc/profile (para todos os usuários)
  2. ~/.bashrc

Então é necessário saber como será feita a conexão com o shell para saber qual aquivo você deve editar, no meu casso, como é pelo ssh , com login, eu devo colocar as variaveis de ambiente no ~/.bash_profile .

Feito..
Valeu !

Fiz um scriptzinho, bem simples, que conta o número de linhas e arquivos, de um determinado tipo, do diretório atual para baixo, com a ajuda de algumas idéias da internet mesmo, e alguns detalhes técnicos do livro do Aurélio, Shell Script Profissional.

Segue o link para pegar o código. Use-o como quiser !

LINK PARA CODIGO

Livros

Acabei adquirindo dois livros neste mês: Shell Script Profissional e Expressões Regulares – Uma abordagem divertida, ambos do Aurélio, ainda não li, mas comprei estes dois , primeiro: porque são de assuntos do meu interesse e segundo, porque são muito bem conceituados pelos leitores.

Python

Ainda na minha saga de aprender mais alguma linguagem de programação, e acabei por escolher o Pyhthon, andei dando mais uma olhadinha nestes dias e para quem quer começar mais facilmente, indico uma lista com alguns editores para tal: http://www.python.org.br/wiki/IdesPython, mas lembre-se o editor é apenas um facilitador, e não uma obrigação. Treine também no vi, nano, notepad++, compile na mão, crie seus projetos e tal.. assim você estará realmente aprendendo a linguagem, e não um editor. :-)

Shell Script

É muito fácil programar em Shell Script.
Agora que realmente precisei desta feature para incrementar os builds do Hudson, aqui no ambiente do trabalho, acabei gostando mesmo.
E com uma fonte de pesquisa muito 10 chamada CANIVETE ( http://aurelio.net/shell/canivete.html ) , do Aurélio, que me ajuda em tudo, ficou mais fácil ainda.

Achei também um tutorial de “Introdução ao Shell Script”, advinha de quem? Aurélio, que me ajudou muito nos passos iniciais e a entender alguns pontos ainda obscuros para mim.

No Hudson, temos como chamar scripts de Shell Script, e estes recebem os parametros do projeto atual, por exemplo:
Tenho um projeto chamado XYZ, este projeto tem como workspace ‘/home/hudson/workspaces/xyz’ e tem um parametro chamado ‘nome’.
Crio um .sh , e mando o projeto executar, clicando em “Add build step->Execute Shell”, informando o caminho para o shell, por exemplo ‘/home/hudson/scripts/meushell.sh’. Ok !

Neste shell, eu tenho disponível uma gama de variáveis de ambiente, disponibilizadas pelo Hudson, como:

$WORKSPACE = Informa o diretorio da workspace do projeto
$BUILD_NUMBER = Numero do build corrente
$BUILD_ID = Id completo , identificador, do build.
$JOB_NAME = Nome do projeto
$JAVA_HOME = Caminho do java que está sendo executado pelo hudson

E por ai vai …

E mais as variáveis que foram definidas como parametros, quando mandamos o projeto construir, será solicitado um valor para cada paremtro definido, e estes valores chegam em forma de variáveis de ambiente em nosso script, como $NOME, no nosso exemplo supra citado.
O script será executado pelo ‘/bin/sh’ passando -xe como parametro, para que seja mostrado cada comando exetudado pelo shell, ou se você configurar um executor shell direfente, este será respeitado (Hudson->Gerenciar Hudson->Configure System->Shell) .

Aliás, eu gosto de fazer uma estrutura simples de diretorios para trabalhar com cada projeto no Hudson, que seria mais ou menos assim:

HOME:/home/hudson
Logs do hudson: $HOME/logs
Scripts ( sejam eles ant, shell, bat, groovy, etc… ) $HOME/scripts
Locais de Trabalho (workspaces) : $HOME/workspaces/[NOME PROJETO]
Local para atualização de códigos do SVN/CVS: $HOME/workspaces/[NOME PROJETO]/SVN
Local para deposito de artefatos gerados ( somente finais ): $HOME/workspaces/[NOME PROJETO]/BUILD
Local para trabalho de scripts dentro de cada projeto ( arquivos temporarios, alterados, movidos. etc… ) : $HOME/workspaces/[NOME PROJETO]/WORK

/home/hudson
/home/hudson/logs
/home/hudson/scripts
/home/hudson/workspaces
/home/hudson/workspaces/[NOME DO PROJETO]
/home/hudson/workspaces/[NOME DO PROJETO]/SVN
/home/hudson/workspaces/[NOME DO PROJETO]/BUILD
/home/hudson/workspaces/[NOME DO PROJETO]/WORK

Assim, mantemos um padrão para todos os projetos, facilita, e muito, a geração de scripts para os builds.

Fica aqui ume pequeniníssima contribuição de um shell, que limpa arquivos .mine, que as vezes são gerados pelo subversion:

#!/bin/sh
echo Verificando arquivos .mine no caminho: `pwd`
for f in `find . -name *.mine` 
do
    echo Removendo mines de: ${f%.mine}
    rm -rf ${f%.mine}* 
done
© 2010 Sérgio Berlotto - Blog Pessoal Obrigado por nos visitar ! Assine o RSS para não perder as novidades! Suffusion WordPress theme by Sayontan Sinha