shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Variáveis


From: Tiago Peczenyj
Subject: Re: [shell-script] Variáveis
Date: Thu, 24 May 2012 11:44:43 -0300

Todas as variaveis são de ambiente.

Estamos falando do shell, que é um interpretador de comandos que roda como
um processo. Quando vc se loga vc inicia um processo que é um shell (o
/bin/bash por exemplo) e começa a trabalhar nele. Tudo o que vc faz roda
nesse processo ou em processos filhos dele, assim as variaveis de ambiente
do shell corrente podem ser copiadas para o processo filho se estiverem
exportadas.

quando o shell inicia ele lê alguns arquivos de configuração (.profile,
.bashrc) e ele cria ou atualiza algumas variaveis, outras são internas.
agora o processo que inicia o seu shell pode ter algumas variaveis de
ambiente também. No linux vc pode ver pelo diretorio virtual /proc/ID

por exemplo, se o seu shell tiver o process id (pid) 1234

cat /proc/1234/environ

isso vai mostrar todas as variaveis que o processo pai passou para ele.
para saber que é o processo pai vc pode olhar o /proc/1234/stat que no
quarto campo tem o id do pai.

o pai de todos é o init cujo pid é 1.

sudo cat /proc/1/environ

vais ver as primeiras variaveis de ambiente.

de onde elas vem? de uma chamada de sistema como execve que recebe a
primeira lista de variaveis dentro do kernel - provavelmente. Alias o
codigo disso tudo é aberto vc poderia dar uma olhada la - faça git clone
https://github.com/torvalds/linux e grep -R por /sbin/init

variaveis são simbolos com valores que são passados por copia. não pense
que são variaveis como em C ou Java, estão um pouco para macros do C, então
nem todas as analogias são possiveis.

2012/5/24 <address@hidden>

> **
>
>
>
>
> ________________________________
> De: Tiago Peczenyj <address@hidden>
> Para: address@hidden
> Enviadas: Terça-feira, 22 de Maio de 2012 13:00
> Assunto: Re: [shell-script] Variáveis
>
>
> O que vc chama de sessão?
>
> No shell/unix todas as variaveis são de ambiente.
> Você se refere tanto as que são definidas antes no login de usuário no
> /etc/profile?
>
> Essas também podem ser chamadas de variáveis de ambiente?
>
>
> A diferença é se elas serão copiadas para os processos filhos ou não, é
> isso que o comando export faz. Por outro lado a questão de escopo é para
> restringir a variavel a um bloco de codigo ou não, ou seja, se vc quer que
> uma variavel criada por uma função seja visivel fora da mesma
>
> http://tldp.org/LDP/abs/html/localvar.html
>
> Não existem variaveis globais em Shell no sentido delas serem acessadas em
> qualquer processo, vc pode forçar a existencia de algumas a partir do
> .profile ou .bashrc fora as que são criadas pelo shell ( $CDPATH ou $PWD
> por exemplo), mas elas ficam restritas por processo e só podem ser
> alteradas no processo corrente, a passagem delas é por copia.
>
> Eu acabei me confundindo mais ainda.
> Vamos lá?
>
> Antes de você se logar já existe variáveis definidas correto?
> Essas variáveis são globais, ou de ambiente?
> Depois que você se loga, estas mesmas variáveis continuam valendo para a
> sua sessão. Neste caso elas continuam sendo chamadas de globais, ou por
> estar disponível para a sua sessão de login passa a se chamar variáveis de
> ambiente?
>
> Obrigado novamente.
>
> Ricardo F. Moscou
> 2012/5/21 ricardomoscou <address@hidden>
>
> > **
>
> >
> >
> > Bom dia a todos,
> >
> > Sei que variáveis locais só podem funcionar dentro da sessão do usuário.
> > Sei também que se usarmos o comando export, esta variável poderá ser
> usada
> > nas sessões iniciadas a partir da sessão atual.
> >
> > Já as variáveis globais estão sempre disponíveis para serem usadas por
> > qualquer sessão de usuário.
> >
> > Para vermos as variáveis locais assim como as exportadas, usamos o
> comando
> > env.
> >
> > Para vermos "todas" as variáveis, usamos o comando set.
> >
> > Pergunta:
> >
> > Quem são as variáveis de ambiente?
> > Seria um terceiro tipo de variável?
> >
> >
> >
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://pacman.blog.br
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> ------------------------------------
>
>
> ----------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> ----------------------------------------------------------
> Sair da lista: address@hidden
>
> ----------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ----------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]