[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Diferen�a_entre_sh_<arquivo>_e_./<arquivo>
From: |
Aurelio Marinho Jargas |
Subject: |
Re: [shell-script] Diferença_entre_sh_<arquivo>_e_./<arquivo> |
Date: |
Wed, 16 Jun 2004 17:34:33 -0300 (ART) |
oi fernando,
--- address@hidden escreveu:
> Gostaria de saber qual diferença existe entre chamar um
> script com "sh" e chamar com "./".
resposta: depende :)
se a primeira linha do script for #!/bin/sh, dá na mesma.
mas ela também pode ser #!/bin/csh ou outra.
ao chamar "sh arquivo", você está chamando explicitamente
o shell "sh" e passando o conteúdo do arquivo para ele
executar. você está _afirmando_ que o conteúdo desse
arquivo é um shell script.
mas ele pode não ser:
$ cat lixo
#!/usr/bin/env python
print "sou python"
$ python lixo
sou python
$ sh lixo
lixo: line 2: print: command not found
o shell tentará executá-lo como se fosse um script sh,
mas não é.
já com o ./arquivo, o shell corrente (que pode não ser o sh)
primeiro vai checar a primeira linha do arquivo, procurando
pela linha mágica
#!/rota/para/programa
para saber *quem* vai executar este arquivo. se ele não achar
a linha, assume que é um shell mesmo e tenta executá-lo.
$ chmod +x lixo
$ ./lixo
sou python
aqui o shell leu a primeira linha, viu que é um script python,
e chamou o interpretador do python para executá-lo.
já, se eu tirar a primeira linha mágica...
$ cat lixo
print "sou python"
$ ./lixo
./lixo: line 1: print: command not found
aà o shell não tem como adivinhar qual o interpretador correto
para este arquivo.
expriquei ou compriquei? :)
=====
--
Aurelio Marinho Jargas, Curitiba, Conectiva
A odisseia verde no FISL http://aurelio.net/curso/fisl
______________________________________________________________________
Participe da pesquisa global sobre o Yahoo! Mail:
http://br.surveys.yahoo.com/global_mail_survey_br