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

Re: Criação de Variaveis de Ambiente



Alguns emuladores de terminal têm a opção de serem usados como se
fossem um shell com login.

Por exemplo, o Xterm que eu utilizo, pode ser executado:
xterm +ls
para se comportar como um login-shell.

Assim não há confusão ou diferenças ao se logar num emulador de
terminal no X ou no terminal de verdade (console).

Nas configurações do gnome-terminal e do konsole deve haver opções parecidas.

O que algumas distribuições fazem é mandar carregar o /etc/profile
dentro do /etc/bash.bashrc. Assim o /etc/profile é executado mesmo
quando se abre um shel sem login, mas ainda falha quando o usuário
executa um shell diferente do bash (por exemplo, quando roda o comando
sh explicitamente).



Em 29/05/07, Maxwillian Miorim<miorimmax@gmail.com> 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 :)

--
Por favor não faça top-posting, coloque a sua resposta abaixo desta linha.
Please don't do top-posting, put your reply below the following line.
--------------------------------------------------------




--
Krishnamurti Lelis Lima Vieira Nunes



Reply to: