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

Re: Criação de Variaveis de Ambiente



Em Ter, 2007-05-29 às 16:56 -0300, Maxwillian Miorim escreveu:
> On 5/29/07, Zandre Bran <zandrebran@gmail.com> wrote:
> > On 5/29/07, Zandre Bran <zandrebran@gmail.com> wrote:
> > >[...]
> > >     Então parto do principío que ao fazer o login em modo texto também
> > > entro no bash, já que é o shell padrão. O que não entendo é porque ao
> > > alterar a PATH no /etc/profile não afeta gnome-terminal e se altero no
> > > /etc/bash.bashrc não afeta do login em modo texto. O que faz-me
> > > concluir que para ter a variável PATH alterada para os dois ambientes
> > > (modo texto e gnome-terminal), tenho que alterar o PATH em
> > > /etc/profile (para modo texto) e /etc/bash.bashrc (para o
> > > gnome-terminal). Lendo os arquivos vejo que os dois (profile e
> > > bash.bashrc) tem a mesma declaração da PATH.
> > >
> > >    É isto que não estou compreendendo. O que é de quem!
> >
> >     Pois é; quem é cego é cego. Tá lá na primeira linha do bash.bashrc
> >
> > # System-wide .bashrc file for interactive bash(1) shells.
> >
> >    E em .bashrc
> >
> > # ~/.bashrc: executed by bash(1) for non-login shells.
> >
> >    Ou seja, baseado tb na participação do Fabiano Manoel, o
> > bash.bashrc vale para shell sem login que é o caso gnome-terminal.
> > Isto é shell sem login.
> >
> >    Ok, agora o q não entendo, sendo o /etc/profile lido, qdo abro um
> > xterm, a leitura do /etc/bash.bashrc sobrepoe o /etc/profile? Pelo
> > visto sim. Mas não deveria, ele poderia adicionar, mas sobrepor
> > principalmente a variavel PATH?
> >
> >     Este comportamento do /etc/bash.bashrc de sobrepor o /etc/profile
> > é fato? Ou estou fazendo errado aqui?
> >
> >     Obrigado pelo tempo,
> > Zandre.
> 
> Este processo no Debian é mais um mito que fato. Todo mundo acha que é
> algo mas aé hoje ue não vi ninguém falar com certeza como funciona.
> 
> Seguindo a lógica, funcionaria assim:
> 
> /etc/profile - É um arquivo de configurações globais, que tenta ser o
> mais independente possível de um shell. Ele que exporta variáveis
> básicas como o PATH para bash, tcsh, ksh e qualquer outro shell.
> 
> /etc/bash.bashrc - São as opções específicas do bash para a
> inicialização o shell de escopo global (todos usuários). Ele é lido
> depois do /etc/profile se tu trabalha com OOP poderia dizer que ele
> herda os atributos do /etc/profile. ;)
> 
> $HOME/.bashrc - Mesmo que /etc/bash.bashrc, porém o escopo é o prórpio
> usuário. (Ele herda de /etc/bash.bashrc, consequentemente herda de
> /etc/profile)
> 
> Mais detalhes que isso eu não posso dar, sou usuário do TCSH e
> customizo este tipo de script desobedecendo descaradamente o padrão da
> distribução em nome de uma melhor usuabilidade :)
> 
> A propósito, se tu fizer scripts como o abaixo para chamar tua
> aplicação pode ser mais conveniente:
> OBS: Nomes são sugestões. ;)
> 
> /usr/appenv/vars.sh:
> ----
> #!/bin/sh
> 
> JAVA_HOME=/usr/lib/java
> CATALINA_HOME=/usr/local/tomcat
> PATH=$JAVA_HOME/bin:$PATH
> ----
> 
> /usr/appenv/loadapp1.sh
> ----
> . /usr/appenv/vars.sh # equivale a um import do java ou include() do php
> 
> java -jar app1.jar
> ----
> 
> E de workarounds a vida continua :)
> 
	Olá. lembro que também fiz muita confusão quando precisei instalar o
compilador fortran da intel. Olha o que tem na página de manual do bash.
_______________________________________________________________________
When bash is invoked as an interactive login shell, or as a  non-inter‐
active  shell with the --login option, it first reads and executes com‐
mands from the file /etc/profile, if that file exists.   After  reading
that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
in that order, and reads and executes commands from the first one  that
exists  and  is  readable.  The --noprofile option may be used when the
shell is started to inhibit this behavior.

When a login shell exits, bash reads and  executes  commands  from  the
file ~/.bash_logout, if it exists.

When  an  interactive  shell that is not a login shell is started, bash
reads and executes commands from  /etc/bash.bashrc  and  ~/.bashrc,  if
these  files  exist.  This may be inhibited by using the --norc option.
The --rcfile file option will force bash to read and  execute  commands
from file instead of /etc/bash.bashrc and ~/.bashrc.
_______________________________________________________________________

	Para resolver os possíveis problemas fiz o seguinte: Adiciono a
variável de ambiente que eu quero tanto no arquivo /etc/profile (para
shell de login) e no arquivo /etc/bash.bashrc (para shell sem login).

	Shell carregados pelo gnome-terminal ou kterminal podem ser
configurados para que sejam executados como shell de login. No caso do
terminal do gnome é só clicar com o botão direito no terminal escolher
"editar perfil padrão" e na aba "título e comando" marcar a opção
"executar comando com shell de login".

	Para finalizar edito o .bash.profile de minha conta para ler o conteúdo
do .bashrc (que seria para shell que não requer login).

	No caso da dúvida sobre a sobresposição do /etc/profile
pelo /etc/bash.bashrc isso não deveria acontecer, uma vez que
o /etc/profile é lido por shell de login e o /etc/bash.bashrc por shell
sem login. Na verdade quando abre o gnome-terminal ele está somente
lendo o /etc/bash.bashrc e não lê o /etc/profile, por isso da suposta
"sobreposição".

	Abraço.
	Fabiano.



Reply to: