Re: /etc/profile (era: Java)

2006-04-24 Por tôpico Bruno de Oliveira Schneider
On 4/19/06, Maxwillian Miorim wrote:
 [...]
 Fiz o teste colocando no /etc/bash.bashrc um export VAR_BASHRC=OK:
 bash.bahsrc e um export VAR_PROFILE=OK: profile no /etc/profile.

 OBS: Instalação Default à partir do CD desta semana do Etch, sem
 nenhuma outra customização no Debian Etch em uma máquina virtual do
 kqemu

 [...]
 Como pode ver deu falha no /etc/bash.bashrc e não deu no /etc/profile.
 Fiz os mesmos testes em um OpenBSD e em um Slackware (o hospedeiro do
 kqemu). Em ambos o resultado foi exatamente igual.

Só para registrar, eu fiz uma instalação nova do Etch neste final de
semana, e observei novamente que o /etc/profile não foi lido ao abrir
o gnome-terminal.

Maxwillian e Thiago não vão fazer o teste proposto?

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-24 Por tôpico Maxwillian Miorim
 Só para registrar, eu fiz uma instalação nova do Etch neste final de
 semana, e observei novamente que o /etc/profile não foi lido ao abrir
 o gnome-terminal.

 Maxwillian e Thiago não vão fazer o teste proposto?

Isso vai longe... :P

Não tive mais tempo para testar, assim que liberar eu mando os resultados.

Citaste que teve problemas no gnome-terminal, então farei uma nova
máquina virtual e instalarei novamente o Etch, desta vez apenas com o
Gnome. Dependendo instalo numa máquina de verdade (só tenho que
arranjar espaço para isso antes)

See ya!

--
Maxwillian Miorim
[EMAIL PROTECTED]

Slackware 10.2 / current e OpenBSD 3.8

There's no place like ${HOME}


Re: /etc/profile (era: Java)

2006-04-20 Por tôpico Bruno de Oliveira Schneider
On 4/19/06, Maxwillian Miorim wrote:
[...]
 Como pode ver deu falha no /etc/bash.bashrc e não deu no /etc/profile.
 Fiz os mesmos testes em um OpenBSD e em um Slackware (o hospedeiro do
 kqemu). Em ambos o resultado foi exatamente igual.
[...]

Realmente está difícil chegar a um acordo aqui.

Estou postando uma conversa com o Maxwillian abaixo, para ficar
registrado para pesquisas futuras:

Bruno: Pela sua mensagem o /etc/bash.bashrc só teria utilidade quando
chamado de outro arquivo? É isso que você pensa?

Maxwillian: Eu fiz vários testes com isso no meu Etch, sempre foi o
/etc/profile e não o bash.bashrc. que ele chamou

Bruno: Sei. Vi isso na sua mensagem.

Maxwillian: É estranho até porque o /etc/profile vem antes do
~/.bashrc, o bash.bashrc deveria ser algo global
mas ainda assim executado após o arquivo mestre do sh

Bruno: que arquivo mestre?

Maxwillian: o /etc/profile
Ele serve para o bourn shell e compatíveis

Bruno: Você está usando Debian agora?

Maxwillian: não só bash
Tenho ssh para um

Bruno: Ok, você já viu o man do bash no Debian, a parte que fala do
/etc/bash.bashrc?

Maxwillian: 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.
Esta?

Bruno: Isso. Note que ele fala que nesse caso, o /etc/profile não é lido.
concorda?

Maxwillian: Sim, ele não é lido neste momento
Mas note: algum shell chamou o X
Logo as propriedades tem de ser herdadas

Bruno: Bom, para testar essa sua hipótese, eu mandei uma mensagem
ontem. Quando puder faça o teste.
O que eu acho é: Seu konsole está abrindo um shell de login quando
deveria estar abrindo um shell comum.
Tem konsole aí?

Maxwillian: Testei todos: konsole, xterm, aterm, eterm e gnome-terminal
e o bom e velho rxvt

Bruno: Em todos ele leu o /etc/profile?

Maxwillian: Ele não leu em nenhum caso
É por isso que falo bastante nisso da herança
Ele não leu, herdou atributos

Bruno: Como você sabe que ele não leu?

Maxwillian: shopt | grep login
login_shell off
Assim :)

Bruno: Bom, então não tenho nada a acrescentar antes de ver os
resultados do teste que eu propus ontem.


--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-19 Por tôpico Bruno de Oliveira Schneider
On 4/18/06, Thiago Arrais wrote:
 Acho que sim. Só que eu mudaria (despudoradamente) sua frase: ele só é
 lido durante o login. Pelo menos nos meus sistemas não parece fazer
 diferença se o login é gráfico ou não.

O problema é que não existe o login. Um usuário pode logar várias
vezes no sistema. Ainda prefiro um shell de login porque um login
não precisa abrir um shell (como, aliás, penso que deveria acontecer
num GDM normal).

 Acho que alguém no meio do caminho, algum dos programas iniciados pelo
 GDM ou ele próprio interpreta o /etc/profile (pelo menos nos sistemas
 da gente). Como o terminal é um processo filho dele, pode enxergar as
 mudanças. Resta saber que é que está fazendo isso e porque no seu
 sistema isso não acontece.

Qual a saída do shopt | grep login num terminal gráfico seu?

Bom, para descobrir quem está interpretando o /etc/profile na sua
máquina, eu pensei em tentar rastrear a hierarquia dos processos.
Sugiro colocar o seguinte no seu /etc/profile para fins de teste:

date  /tmp/teste-do-profile
echo ID deste processo: $$  /tmp/teste-do-profile
echo === saída do ps:  /tmp/teste-do-profile
ps  /tmp/teste-do-profile
echo === saída do pstree:  /tmp/teste-do-profile
pstree -p  /tmp/teste-do-profile

Com isso, acredito que as informações suficientes para rastrear quem
chamou quem ficarão registradas no /tmp/teste-do-profile.

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-19 Por tôpico Maxwillian Miorim
Shell de login não significa pedir usuário e senha. Com um 'su
usuario -' ou 'bash -l' tu tens um shell de login. Não tenho comigo
nenhuma comprovação, mas acredito que o xterm (e afins), como emulador
de terminal, não precisa solicitar usuário e senha, então ele pula o
login e abre um shell novo, como se fosse um shell de login.

Fiz o teste colocando no /etc/bash.bashrc um export VAR_BASHRC=OK:
bash.bahsrc e um export VAR_PROFILE=OK: profile no /etc/profile.

OBS: Instalação Default à partir do CD desta semana do Etch, sem
nenhuma outra customização no Debian Etch em uma máquina virtual do
kqemu

Quando abri o konsole executei:

# [ -z $VAR_BASHRC ]  echo $VAR_BASHRC || echo FALHA: bash.bashrc
não foi lido

O retorno foi:
FALHA: bash.bashrc não foi lido

# [ -z $VAR_PROFILE ]  echo $VAR_PROFILE || echo FALHA: profile não
foi lido

O retorno foi:
OK: profile

Como pode ver deu falha no /etc/bash.bashrc e não deu no /etc/profile.
Fiz os mesmos testes em um OpenBSD e em um Slackware (o hospedeiro do
kqemu). Em ambos o resultado foi exatamente igual.

Agora note que o /etc/profile é lido pelo shell que chama o modo
gráfico, logo seus atributos são herdados (variáveis, aliases e etc.).
Se esta informação fosse falsa os shells do modo gráfico JAMAIS
herdariam atributos como o ls colorido e etc., uma vez que isto é
presente UNICA E SOMENTE no /etc/profile.

Uma coisa bem interessante é que ao colocar um . /etc/bash.bashrc no
/etc/profile ambos os testes tiveram êxito (a variável foi exportada).
Mas isto não significa nada, eu poderia criar um
/etc/meuarquivoquedefinevarsetemumnomebemgrandemesmo e fazer um
./etc/meuarquivoquedefinevarsetemumnomebemgrandemesmo que funcionaria
da mesma forma.

Voltando ao início da discussão (Java), quando instalas pelo pacote
.deb onde que ele coloca $JAVA_HOME e altera o $PATH? Fácil, no
/etc/profile :)

--
Maxwillian Miorim
[EMAIL PROTECTED]

Slackware 10.2 / current e OpenBSD 3.8

There's no place like ${HOME}


Re: /etc/profile (era: Java)

2006-04-18 Por tôpico Bruno de Oliveira Schneider
On 4/17/06, Thiago Arrais wrote:
 On 4/17/06, Maxwillian Miorim wrote:
  Acabei de verificar com o comando find e em nenhuma ocasião vi algo
  que carregasse o /etc/profile:

 Mesma coisa aqui. Só se alguém tiver carregando-o por tabela
 (carregando algum outro script que o carrega). Alguma outra idéia,
 Bruno?

Eu andei lendo um pouco mais sobre o /etc/bash.bashrc e aprendi que
seu uso é configurável em tempo de compilação. No Debian, desde
dezembro de 1999, usa-se esta opção e a man page do bash no Debian
foi alterada para documentar isso.

Achei estranho o Thiago comentar que o Fedora não usa, porque usei
bastante o Fedora 1 e podia jurar que eles usavam esse arquivo também.
Talvez isso tenha sido alterado de lá pra cá.

Quanto ao comentário de que o /etc/bash.bashrc deve ser chamado pelo
/etc/profile, faltou destacar o se você quiser que ele seja usado em
shells de login. Isso é exatamente o que eu venho repetindo aqui:
shells de login (como o do Ctrl+Alt+F1) usam o /etc/profile enquanto
outros shells (como os do xterm, konsole, gnome-terminal, etc.) usam o
/etc/bash.bashrc. Daí a necessidade de configurar variáveis de
ambiente nos dois, que foi o que iniciou toda essa discussão.

Bom, tirando o problema do /etc/bash.bashrc, numa coisa acho que todo
mundo concorda: o /etc/profile só é lido num shell de login.

Os shells dos terminais gráficos não deveriam ser de login, porque o
usuário já fez login no GDM ou equivalente. Os shells dos scripts de
inicialização não deveriam ser de login porque ninguém logou ainda.

Acho que alguma coisa na máquina de vocês deve estar abrindo shell de
login quando não deveria. Sugiro que vocês abram um terminal gráfico
e vejam se o bash é de login ou não. Isso pode ser visto na opção
login_shell, assim:

$ shopt | grep login
login_shell off

Se o de vocês for on o caso está encerrado: a culpa é do emulador de
terminal. Se o de vocês também for off, significa que algum outro
shell antes desse é que foi chamado como login. Resta descobrir onde.
Penso que só poderia ser o X que está fazendo isso, mas não sei onde
procurar isso -- até porque, como as máquinas à minha disposição não
fazem isso, fica difícil... Se eu pensar em alguma coisa, aviso.

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-18 Por tôpico Thiago Arrais
Bruno,

On 4/18/06, Bruno de Oliveira Schneider [EMAIL PROTECTED] wrote:
 Bom, tirando o problema do /etc/bash.bashrc, numa coisa acho que todo
 mundo concorda: o /etc/profile só é lido num shell de login.

Acho que sim. Só que eu mudaria (despudoradamente) sua frase: ele só é
lido durante o login. Pelo menos nos meus sistemas não parece fazer
diferença se o login é gráfico ou não.

 Os shells dos terminais gráficos não deveriam ser de login, porque o
 usuário já fez login no GDM ou equivalente. Os shells dos scripts de
 inicialização não deveriam ser de login porque ninguém logou ainda.

Acho que alguém no meio do caminho, algum dos programas iniciados pelo
GDM ou ele próprio interpreta o /etc/profile (pelo menos nos sistemas
da gente). Como o terminal é um processo filho dele, pode enxergar as
mudanças. Resta saber que é que está fazendo isso e porque no seu
sistema isso não acontece.

Abraço,

Thiago Arrais
--
Mergulhando no Caos - http://thiagoarrais.blogspot.com
Pensamentos, idéias e devaneios sobre desenvolvimento de software e
tecnologia em geral



Re: /etc/profile (era: Java)

2006-04-17 Por tôpico Bruno de Oliveira Schneider
On 4/13/06, Maxwillian Miorim wrote:
[...]
 Quando fazes logon no KDM, GDM ou o que for, na realidade está abrindo
 um terminal, que fica no dispositivo /dev/pts/n (n é um número entre 0
 e o limite do kernel, comumente 255), ou seja, tu abre um shell de
 login e consequentemente interpreta o /etc/profile.

Abrir uma sessão X abre um pseudo-terminal? Nunca vi isso. Onde você
leu sobre isso?

Eu uso Debian/Etch e você?

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-17 Por tôpico Maxwillian Miorim
Debian Sarge, Etch, Sid e Woody, tenho todos instalados e nenhum me dá
problema do tipo. Uso mais o Etch em desktop.

O mesmo vale para o Slackware (do 8.0 ao 10.2, os que utilizei) e o
OpenBSD (desde o 3.6 até o 3.8).

Em todos os citados a exportação de variáveis funciona assim como
qualquer coisa que eu coloque no /etc/profile (para bourn shell (sh) e
derivados) ou /etc/csh.login (para csh e derivados)


--
Maxwillian Miorim
[EMAIL PROTECTED]

Slackware 10.2 / current e OpenBSD 3.8

There's no place like ${HOME}


Re: /etc/profile (era: Java)

2006-04-17 Por tôpico Bruno de Oliveira Schneider
On 4/14/06, Thiago Arrais wrote:
 On 4/13/06, Bruno de Oliveira Schneider [EMAIL PROTECTED] wrote:
  Já que vocês insistem que isso é verdade, eu usei a sujestão do Thiago
  (acima). Rebootei a máquina. A VARIAVEL_ESQUISITA não estava setada,
  como era de se esperar.

 O que você está usando aí? Aqui com GDM e Gnome em um sistema Ubuntu
 funcionou. Deve haver alguma configuração que difere entre nossos
 sistemas para fazer o teste falhar para você. Será que não há algum
 script de usuário seu que está limpando o ambiente? É improvável, mas
 possível.

Estou usando GDM com XFCE. Outros usuários na máquina usam GDM com
Gnome. Debian Etch. Só para ter certeza, olhei todos os arquivos de
inicialização do bash. Ninguém limpa o ambiente até porque isso
seria meio difícil -- pensando assim rapidamente, não me vem à cabeça
nenhuma forma de apagar todas as variáveis de ambiente.

 Sempre alterei as variáveis que preciso que valham para o sistema
 inteiro (todos os usuários) no /etc/profile e a coisa sempre
 funcionou, com login gráfico (em geral com GDM) ou não.

Eu sempre vejo na lista pessoas que alteram apenas o /etc/profile e
acham estranho que suas variáveis de ambiente não estejam
funcionando. Aí eu digo para elas alterarem o /etc/bash.bashrc e
elas passam a funcionar.

Eu dei aula sobre shells durante alguns anos e meus alunos costumavam
aparecer com o mesmo problema (alterar o /etc/profile não ser
suficiente), mesmo em outras distros.

Infelizmente, meu pedido para que os colegas da lista façam o teste
que você propôs parece ter sido completamente ignorado... Me parece
mais provável que no seu micro e no do Maxwillian, algum dos arquivos
rc esteja mandando interpretar o /etc/profile.

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-17 Por tôpico Bruno de Oliveira Schneider
On 4/17/06, Maxwillian Miorim wrote:
 Debian Sarge, Etch, Sid e Woody, tenho todos instalados e nenhum me dá
 problema do tipo. Uso mais o Etch em desktop.

 O mesmo vale para o Slackware (do 8.0 ao 10.2, os que utilizei) e o
 OpenBSD (desde o 3.6 até o 3.8).

 Em todos os citados a exportação de variáveis funciona assim como
 qualquer coisa que eu coloque no /etc/profile (para bourn shell (sh) e
 derivados) ou /etc/csh.login (para csh e derivados)

Já que eu olhei meus arquivos de inicialização do bash, peço que você
e o Thiago também façam uma verificação: os arquivos em
/etc/X11/Xsession.d/ ou o /etc/X11/Xsession em suas máquinas não
estariam mandando ler o /etc/profile?

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-17 Por tôpico Thiago Arrais
On 4/17/06, Bruno de Oliveira Schneider [EMAIL PROTECTED] wrote:
 Me parece
 mais provável que no seu micro e no do Maxwillian, algum dos arquivos
 rc esteja mandando interpretar o /etc/profile.

É possível. Não havia pensado nisso.

Vou verificar quando chegar em casa e publico o resultado.

Abraço,

Thiago Arrais
--
Mergulhando no Caos - http://thiagoarrais.blogspot.com
Pensamentos, idéias e devaneios sobre desenvolvimento de software e
tecnologia em geral



Re: /etc/profile (era: Java)

2006-04-17 Por tôpico Thiago Arrais
Bruno,

Estou num sistema Fedora agora, e  o manual do bash não cita esse
/etc/bash.bashrc global, o que mais chega perto é o ~/.bashrc
(específico para cada usuário):


FILES
   /bin/bash
  The bash executable
   /etc/profile
  The systemwide initialization file, executed for login shells
   ~/.bash_profile
  The personal initialization file, executed for login shells
   ~/.bashrc
  The individual per-interactive-shell startup file
   ~/.bash_logout
  The  individual  login shell cleanup file, executed when a login
  shell exits
   ~/.inputrc
  Individual readline initialization file


Mas achei algo parecido no ~/.bashrc:


# .bashrc

# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
 . /etc/bashrc
fi


Estranho é que o manual (da shell) diz que executa o /etc/profile e
nunca fala em bash.bashrc. No entanto, se as coisas não são iniciadas
a partir de um shell (ou pseudo-shell, como queira) essa informação é
irrelevante. De qualquer modo, seria interessante que o outro programa
(qualquer que seja) que inicia as coisas imitasse o comportamento do
shell, só para evitar surpresas.

Mas ainda quero ver como as coisas estão na máquina de casa, uma Debian.

Abraço,

Thiago Arrais
--
Mergulhando no Caos - http://thiagoarrais.blogspot.com
Pensamentos, idéias e devaneios sobre desenvolvimento de software e
tecnologia em geral



Re: /etc/profile (era: Java)

2006-04-17 Por tôpico Maxwillian Miorim
Acabei de verificar com o comando find e em nenhuma ocasião vi algo
que carregasse o /etc/profile:

[EMAIL PROTECTED]:~# find /etc/X11 -type f -exec grep . /etc/profile {} \;
[EMAIL PROTECTED]:~# find /etc/X11 -type f -exec grep sh /etc/profile {} \;
[EMAIL PROTECTED]:~# find /etc/X11 -type f -exec grep source /etc/profile {} 
\;


Nada retornado nos três casos e o mais estranho, é uma instalação
default do Sarge com um dist-upgrade para Etch, nenhum conf foi
alterado e, ao abrir o X e executar no xterm echo
$VARIAVEL_ESQUISITA, o conteudo dela foi exibido na tela.

Há um bash.bashrc realmente no Debian, mas leia o que tem no começo deste:

# System-wide .bashrc file for interactive bash(1) shells.

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.

Ou seja, ele deve ser chamado pelo /etc/profile com o comando source.

Nunca usei este arquivo e todos os meus scripts do shell fazem
referência ou são carregados pelo /etc/profile através do source
arquivo. Assim que configuro o JDK, assim que configuro o JRE,
Eclipse, alias para comandos e todas as minhas configurações.

--
Maxwillian Miorim
[EMAIL PROTECTED]

Slackware 10.2 / current e OpenBSD 3.8

There's no place like ${HOME}


Re: /etc/profile (era: Java)

2006-04-17 Por tôpico Thiago Arrais
On 4/17/06, Maxwillian Miorim [EMAIL PROTECTED] wrote:
 Acabei de verificar com o comando find e em nenhuma ocasião vi algo
 que carregasse o /etc/profile:

Mesma coisa aqui. Só se alguém tiver carregando-o por tabela
(carregando algum outro script que o carrega). Alguma outra idéia,
Bruno?

Abraço,

Thiago Arrais
--
Mergulhando no Caos - http://thiagoarrais.blogspot.com
Pensamentos, idéias e devaneios sobre desenvolvimento de software e
tecnologia em geral



Re: /etc/profile (era: Java)

2006-04-14 Por tôpico Thiago Arrais
On 4/13/06, Bruno de Oliveira Schneider [EMAIL PROTECTED] wrote:
 Já que vocês insistem que isso é verdade, eu usei a sujestão do Thiago
 (acima). Rebootei a máquina. A VARIAVEL_ESQUISITA não estava setada,
 como era de se esperar.

O que você está usando aí? Aqui com GDM e Gnome em um sistema Ubuntu
funcionou. Deve haver alguma configuração que difere entre nossos
sistemas para fazer o teste falhar para você. Será que não há algum
script de usuário seu que está limpando o ambiente? É improvável, mas
possível.

Sempre alterei as variáveis que preciso que valham para o sistema
inteiro (todos os usuários) no /etc/profile e a coisa sempre
funcionou, com login gráfico (em geral com GDM) ou não.

Abraços,

Thiago Arrais
--
Mergulhando no Caos - http://thiagoarrais.blogspot.com
Pensamentos, idéias e devaneios sobre desenvolvimento de software e
tecnologia em geral



Re: /etc/profile (era: Java)

2006-04-13 Por tôpico Bruno de Oliveira Schneider
On 4/12/06, Thiago Arrais wrote:
 Podemos verificar que as modificacoes ao /etc/profile também valem
 para o modo grafico se definirmos nele uma variavel com um nome
 esquisito (para que nenhum dos scripts posteriores a sobreescreva por
 engano) e um valor qualquer. Depois é só olhar o conteúdo da variável
 em algum shell dentro do modo gráfico.

 Para os apressados, no final do /etc/profile:

 export VARIAVEL_ESQUISITA='alteracao no /etc/profile'

 Depois (de reiniciar ou recarregar seu /etc/profile de outro modo), no shell:
[...]

Já que vocês insistem que isso é verdade, eu usei a sujestão do Thiago
(acima). Rebootei a máquina. A VARIAVEL_ESQUISITA não estava setada,
como era de se esperar.

Convido outros colegas da lista a fazer o teste, postar os resultados
e ajudar a por um fim nessa lenda.

On 4/12/06, Maxwillian Miorim wrote:
 /etc/profile é o arquivo de configurações do SH (bash é uma melhoria
 do sh), e no Debian é o shell padrão. O X nada mais é que uma
 aplicação que roda SOBRE o shell, logo HERDA as suas propriedades.

Errado. O X, como qualquer aplicação pode OU NÃO ser chamada por um
shell. Quem usa GDM, KDM, etc. (e é assim num usuário padrão) não tem
o X chamado por um shell.

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-13 Por tôpico Maxwillian Miorim
 Errado. O X, como qualquer aplicação pode OU NÃO ser chamada por um
 shell. Quem usa GDM, KDM, etc. (e é assim num usuário padrão) não tem
 o X chamado por um shell.

Quem inicia o KDM, GDM e XDM é o SHELL.

Os SCRIPTS DE INICIALIZAÇÃO DO RUNLEVEL fazem isto.

Todo o sistema operacional roda sobre o shell, leia sobre a estrutura
do kernel e tu vai entender o que eu falo.

Eu não falo de no EMULADOR DE TERMINAL ou TERMINAL executar o comando
startx ou algo do tipo, falo da camada do sistema relacionada à
interação com o usuário, chamada SHELL ou se traduzir CASCA.

--
Maxwillian Miorim
[EMAIL PROTECTED]

Slackware 10.2 / current e OpenBSD 3.8

There's no place like ${HOME}


Re: /etc/profile (era: Java)

2006-04-13 Por tôpico Bruno de Oliveira Schneider
On 4/13/06, Maxwillian Miorim wrote:
 Quem inicia o KDM, GDM e XDM é o SHELL.

 Os SCRIPTS DE INICIALIZAÇÃO DO RUNLEVEL fazem isto.

É verdade, esqueci deste detalhe. Porém o shell que executa os scripts
de inicialização não é um shell de login e portanto não é afetado pelo
/etc/profile. Ou você tem alguma outra explicação para o fato de que
eu fiz o teste do Thiago e ele se comportou como eu esperava?

 Todo o sistema operacional roda sobre o shell, leia sobre a estrutura
 do kernel e tu vai entender o que eu falo.

Se o shell é uma interface para o sistema operacional, como é que todo
o sistema operacional roda sobre o shell? Indique algo mais
específico sobre a estrutura do kernel que eu leio, se já não tiver
lido antes.

 Eu não falo de no EMULADOR DE TERMINAL ou TERMINAL executar o comando
 startx ou algo do tipo, falo da camada do sistema relacionada à
 interação com o usuário, chamada SHELL ou se traduzir CASCA.

Não entendi o que você quis dizer nesse parágrafo. Todo shell é
camada do sistema relaciona à interação com o usuário. Os scripts de
inicialização só são usados porque essa é uma forma fácil e
configurável de iniciar o sistema. Poderia ser diferente, como é em
outros sistemas operacionais.

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-13 Por tôpico Maxwillian Miorim
Bruno,

Estes são trechos da manpage 1 referente ao Bash:

...

--noprofile
Do not read either the system-wide startup file /etc/profile or
any of the personal initialization files ~/.bash_profile,
~/.bash_login, or ~/.profile. By default, bash reads these files when
it is invoked as a login shell (see INVOCATION below).

...

When bash is invoked as an interactive login shell, or as a
non-interactive shell with the --login option, it first reads and
executes commands 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.

...

OBS: A manpage do sh diz o mesmo que a do Bash, e o mesmo vale para o Ksh

Quando fazes logon no KDM, GDM ou o que for, na realidade está abrindo
um terminal, que fica no dispositivo /dev/pts/n (n é um número entre 0
e o limite do kernel, comumente 255), ou seja, tu abre um shell de
login e consequentemente interpreta o /etc/profile.

Voltando à manpage, note que se tiveres um ~/bash_profile, um
~/.bash_login ou um ~/.profile estes serão executados após o
/etc/profile (o que for encontrado primeiro, na ordem citada, é
executado e os demais não), faça um teste com um novo usuário (crie um
e faça logon no modo gráfico)

--
Maxwillian Miorim
[EMAIL PROTECTED]

Slackware 10.2 / current e OpenBSD 3.8

There's no place like ${HOME}


/etc/profile (era: Java)

2006-04-12 Por tôpico Bruno de Oliveira Schneider
On 4/11/06, Maxwillian Miorim wrote:
[...]
 OBS: Configurações do /etc/profile afetam *sim* o modo gráfico.

Você poderia indicar alguma documentação ou algum teste que suporte
essa sua afirmação?

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/



Re: /etc/profile (era: Java)

2006-04-12 Por tôpico Maxwillian Miorim
On 4/12/06, Bruno de Oliveira Schneider [EMAIL PROTECTED] wrote:
 On 4/11/06, Maxwillian Miorim wrote:
 [...]
  OBS: Configurações do /etc/profile afetam *sim* o modo gráfico.

 Você poderia indicar alguma documentação ou algum teste que suporte
 essa sua afirmação?

Defina o PATH para um local diferente no /etc/profile (no fim dele,
para ter certeza de que nada sobrescreve), depois compile um binário e
copie para o local referenciado. Em qualquer terminal (xterm, ttys e
etc) ou nos gerenciadores de tarefa (se for na opção executar) vais
conseguir executar o binário.

/etc/profile é o arquivo de configurações do SH (bash é uma melhoria
do sh), e no Debian é o shell padrão. O X nada mais é que uma
aplicação que roda SOBRE o shell, logo HERDA as suas propriedades.

O exemplo que tens para isto é o princípio da orientação à objetos em
relação à herança.

--
Maxwillian Miorim
[EMAIL PROTECTED]

Slackware 10.2 / current e OpenBSD 3.8

There's no place like ${HOME}


Re: /etc/profile (era: Java)

2006-04-12 Por tôpico Thiago Arrais
On 4/12/06, Maxwillian Miorim [EMAIL PROTECTED] wrote:
 Defina o PATH para um local diferente no /etc/profile (no fim dele,
 para ter certeza de que nada sobrescreve), depois compile um binário e
 copie para o local referenciado. Em qualquer terminal (xterm, ttys e
 etc) ou nos gerenciadores de tarefa (se for na opção executar) vais
 conseguir executar o binário.

...se nenhum dos scripts que rodam após o /etc/profile modificarem o
PATH. Dê uma olhada em `man bash` para detalhes sobre a ordem de
execução dos scripts.

Podemos verificar que as modificacoes ao /etc/profile também valem
para o modo grafico se definirmos nele uma variavel com um nome
esquisito (para que nenhum dos scripts posteriores a sobreescreva por
engano) e um valor qualquer. Depois é só olhar o conteúdo da variável
em algum shell dentro do modo gráfico.

Para os apressados, no final do /etc/profile:

export VARIAVEL_ESQUISITA='alteracao no /etc/profile'

Depois (de reiniciar ou recarregar seu /etc/profile de outro modo), no shell:

% echo $VARIAVEL_ESQUISITA
alteracao no /etc/profile

Abraço,

Thiago Arrais
--
Mergulhando no Caos - http://thiagoarrais.blogspot.com
Pensamentos, idéias e devaneios sobre desenvolvimento de software e
tecnologia em geral