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

Re: Criação de Variaveis de Ambiente



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.
--------------------------------------------------------



Reply to: