shell-script-pt
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]