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

Re: diferença entre sh e ./



Boa Noite , 

eu fiz os testes que o @listeiro propôs e realmente ficou bem esclarecido , essa questão das Shells 

Obrigado a todos ! 

Em 23 de maio de 2015 03:20, Listeiro 037 <listeiro_037@yahoo.com.br> escreveu:

Tenho a proposta de um exercício se você topar e tiver um
tempo. Experimenta apagar a primeira linha com she-bang do script
(deixar a linha em branco) e põe ele prá rodar:

1) com ./script
1) com sh script
2) com sh ./script
3) com bash script
4) com bash ./script

Depois você elimina a permissão de escrita com um chmod -x script e
refazestes testes, executando. Depois você digita sh no prompt e aperta
enter prá entrar no dash e refaz os testes.

A variável $PATH de seu ambiente terminal possui vários diretórios de
arquivos binários para a execução. Diretórios como /bin /usr/bin e se
você for root também terá /sbin e /usr/sbin e outros
como /usr/local/bin podem entrar nessa lista.

Para confirmar basta você executar um echo $PATH e irá ver como está
sua variável PATH de busca de caminhos de execução.

Agora se você adicionar no seu $PATH um caminho para seu
diretório /home/usuario (supondo seu usuário ter o nome de usuario),
então o script rodará sem o ./ para você. Ele rodará que nem um ls, que
não precisa de um /bin/ls prá rodar como o script precisa de
um ./script para rodar.

Não é recomendado colocar na variável PATH o diretório home por
questões de segurança (até onde sei, pelo que aprendi). Continue
executando comandos dentro de home com ./



Em Sat, 23 May 2015 00:04:40 -0300
Tiago Pigazao <pigazao@gmail.com> escreveu:

> então independente do que for usado na execução sh ou ./ ele de certa
> forma não vai considerar aquele sha-bang do inicio #!bin/bash ?
>
> Em 22 de maio de 2015 23:34, Listeiro 037 <listeiro_037@yahoo.com.br>
> escreveu:
>
> >
> > Olá.
> >
> > sh é um link em /bin/sh. No Debiian aponta para /bin/dash.
> > Dash é uma implementação do Almqvist Shell (ash) para o Debian. É
> > shell diferente do Bash.
> >
> > ./ executa o script com shell do ambiente
> >
> > Dash entende as coisas diferentes do que Bash entende. São como que
> > linguagens de scripts diferentes.
> >
> > Por isso é que há uma orientação prá se escrever scripts que
> > funcionem não apenas com bash ou zsh, mas com csh, ksh, dash e
> > muitos outros. No caso do if há dois comandos prá serem usados
> > junto com ele chamado expr e test.
> >
> > Uma versão do seu script para Dash seria:
> >
> > #!/bin/sh
> > for var in $(seq 100) ; do
> >         if test $(expr $var % 2) -eq 0
> >         then
> >                 echo $var
> >         fi ;
> > done
> >
> >
> > Em Fri, 22 May 2015 23:04:25 -0300
> > Tiago Pigazao <pigazao@gmail.com> escreveu:
> >
> > > Boa noite
> > >
> > > Pessoal alguem sabe, qual é a diferença de se executar um shell
> > > script com "sh" ou com "./" ?
> > >
> > > estou com o seguinte cenário..
> > >
> > > tenho um script com permissão de execução ok , ao executar com
> > > "sh" ele não funciona (da problema na linha do if), agora se
> > > executar com "./"  funciona ok... segue script abaixo :
> > >
> > > #!/bin/bash
> > > for var in $(seq 100) ; do
> > > if (( $var % 2 == 0 ))
> > > then
> > > echo $var
> > > fi ; done
> >
> >
> > --
> > To UNSUBSCRIBE, email to
> > debian-user-portuguese-REQUEST@lists.debian.org with a subject of
> > "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> > Archive:
> > [🔎] 887903.3626.bm@smtp234.mail.gq1.yahoo.com" target="_blank">https://lists.debian.org/[🔎] 887903.3626.bm@smtp234.mail.gq1.yahoo.com
> >
> >


--
To UNSUBSCRIBE, email to debian-user-portuguese-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: [🔎] 983881.16648.bm@smtp233.mail.gq1.yahoo.com" target="_blank">https://lists.debian.org/[🔎] 983881.16648.bm@smtp233.mail.gq1.yahoo.com



Reply to: