fique atento $ cat xxx #!/bin/bash echo SHLVL = $SHLVL echo antes = $TESTE TESTE=lala echo depois = $TESTE
$ export TESTE=limao $ ./xxx SHLVL = 2 antes = limao depois = lala $ echo $TESTE limao $ . ./xxx # usando o comando source ou . SHLVL = 1 antes = limao depois = lala Ou seja, vc não consegue alterar a sua variavel no shell pai por que vc executa o script no shell filho, as variaveis só vão, não voltam. uma boa explicação esta aqui http://www.meleuzord.hpg.ig.com.br/textos/bashscripting.txt --> SHLVL Esta variável armazena quantos shells você executou a partir da primeira shell. Confuso? Vamos a um exemplo. Imagine que você está usando o bash e executou o bash de novo, nesta situação o seu SHLVL vale 2. Veja isto: /* -=-=-= exemplo =-=-=- */ $ echo $SHLVL 1 $ bash # estou executando o bash a partir do bash $ echo $SHLVL 2 $ exit # saí do segundo bash exit $ echo $SHLVL 1 /* -=-=-= exemplo =-=-=- */ Quando você inicializa scripts a partir do comando "source" o script é executado no shell pai, portanto se tiver um "exit" no script você vai executar um logoff. É aí que está a utilidade da variável SHLVL. Quando você está no shell primário o valor de SHLVL é 1. Então você pode, através de um "if" por exemplo, executar o "exit" só se SHLVL for diferente de 1 (mais informações sobre o source em "6.1 Funções como comandos"). Pratique um pouco diferentes usos e formas de setar variaveis e abrir sub-shells, é bom pra praticar este conceito (q as vezes atrapalha quando a gente não se dá conta dos detalhes). On 2/2/07, luiz henrique campos <[EMAIL PROTECTED]> wrote: > > > > > > > Olá grupo, > sou novato no grupo e estou com uma duvida em uma questão que olhei no > selfteste: > > se eu dê o comando "export TESTE=snuff" e apos isso criar um script da > seguinte forma: > #!/bin/bash > USER=testeking > TESTE=$USER > > porque > apos executar esse script a variavel $TESTE continua com o valor "nuff" > ?????? Sendo que se eu nao usar o script e da o seguinte comando > TESTE=snuff2 (direto, sem exportar), a variavel vai pegar o resultado > "snuff2". > Por que isso acontece?? > > __________________________________________________ > Fale com seus amigos de graça com o novo Yahoo! Messenger > http://br.messenger.yahoo.com/ > -- Tiago B Peczenyj Linux User #405772 # cd /pub # more beer
