EDUARDO ANTONIO RAGA LUCCAS escreveu:
> Ola a todos, boa tarde!
> Colegas, eu estou com uma dúvida, que é meio boba confesso, mas não
> consegui resolver, e nem sei como pesquisar isso no Google... :-\
> E' o seguinte:
> suponha que eu tenha o seguinte script, bem simples:
> #!/bin/bash
> cd /usr/local/etc
> ls
> pronto, ele entra no diretório /usr/bin e lista o seu conteúdo.
> SÓ QUE, ai vem a minha dúvida, quando sai do comando e volta pro prompt
> ele volta no diretório onde eu estava quando eu dei o comando. OK. Mas,
> como eu faço para que, ao sair do comando, ele fique no diretório que eu
> especifiquei DENTRO do script e NÃO no diretório que eu estava ao
> executar o comando ?
> Nesse exemplo, ao sair do script, eu quero que o prompt caia no
> /usr/local/etc e não no diretório no qual eu executei o script (estou
> considerando, claro, que o script está em um diretório no $PATH).
> Já tentei deixar como último comando um cd /usr/local/etc mas não
> funcionou.
> Tem como fazer isso ?
>
Olá,
Isso acontece pelo fato de acho chamar o script, o shell faz um
fork e o script vira um processo filho com variáveis de ambiente todas
iguais no início da execução, porém quando sai do script, que é um
processo filho, volta para o processo pai com as variáveis de ambiente
intactas. O que pode ser feito é usar o exec para fazer com que o script
entre no lugar do bash e no final do script outro exec para carregar o
bash novamente no lugar do script:
#!/bin/bash
cd /usr/local/etc
ls
exec /bin/bash
Chamado com exec na frete do script assim:
$ exec nome_do_script_executável
--
Atenciosamente,
Junior Polegato
Um peregrino de problemas; Um pergaminho de soluções!
Página Profissional: http://www.juniorpolegato.com.br
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html