Linux/Unix Shell Scripting - diferencia entre shell scripts y comando source

 
Vista:

diferencia entre shell scripts y comando source

Publicado por moises (1 intervención) el 25/10/2007 23:57:14
hola todos,

tengo algunas dudas con respecto a los shell scripts en linux y el comando "souce":

1.- entiendo que un shell script se reconoce por tener la linea #!/bin/bash correcto??, pero me doy cuenta que tambien puedo hacer scripts sin necesidad de esta linea y simplemente correrlos con el comando 'source', entonces cual es la diferencia entre hacer un shell script y hacer un script y correrlo con 'source' ??

2.- un shell script debe tener permisos de ejecucion para poder ejecutarse, pero un script normal (sin la linea #!/bin/bash) puede NO tener permisos de ejecucion y aun asi se puede ejecutar con 'source', entonces cual es la ventaja del shell script??

3.- en el codigo del script quiero hacer que a la hora que se ejecute me cambie a la carpeta "/home/usuario" por ejemplo, asi que añado estas lineas de codigo

var=/home/usuario
cd $var

pero cuando ejecuto un shell script con este codigo no me cambia a esa carpeta, la forma de ejecutarlo es: $ ./script1

y cuando ejecuto un script (sin la linea #!/bin/bash), entonces si me cambia a la carpeta que yo quiero, la forma de ejecutarlo es: $ source ./script1

entonces estoy confundido, con esto veo que es mucho mejor hacer scripts y ejecutarlos con 'source' que hacer shell scripts, no veo cual es la ventaja de los shell scripts??, basicamente cual es la diferencia entre un shell script y un script que ejecuto con 'source'??

gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:diferencia entre shell scripts y comando source

Publicado por xhiena (1 intervención) el 12/11/2008 22:22:09
Uff, tienes un lio gordo xD

un shell script es un script que se ejecuta en un shell (consola, terminal), no son solo los que tengan #!/bin/bash

no tienen que tener permisos de ejecucion, los puedes lanzar llamando a un shell : sh script1 (igual que con source), le das permisos para poder ejecutarlos sin llamar a otro programa.

Source es un programa que interpreta comandos, por eso te lo hace bien (es como si los escribieras en bash directamente).

la linea #!/bin/bash solo indica que ese script usara los comandos del shell bash, tales como test, if, for,....
puedes hacer scripts que usen comandos de otras aplicaciones #!/bin/perl para ejecutar perl, #!/bin/php para php...

Resumiendo, hacerlos ejecutables solo sirve para no tener que llamarlos desde otro programa externo (source en tu caso).

Cual es mas eficaz? pues eso es ya a gusto del consumidor, yo prefiero añadir a mi variable $PATH (que es donde busca ejecutables) el directorio . (punto) que es en el que estoy y hacer los scripts ejecutables, asi los puedo llamar sin hacer ./ o llamar a un programa externo.

Pero ya digo que esto es a nivel personal.

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar