2011-02-17 7 views

Respuesta

11

Como mencionó Noufal, . es un alias de source.

Al buscar el archivo, todos los comandos se ejecutan dentro del contexto de su sesión bash actual, lo que significa que todas las variables de entorno que exporta ahora estarán disponibles para usted.

Si ejecuta el script en lugar de la fuente, se ejecuta en una subcadena y las variables exportadas no se pasan a su sesión. En efecto, eso prácticamente frustra el objetivo de .profile.

Como demostración, supongamos que tiene el archivo test.sh:

#!/bin/bash 
# in test.sh 
print "exporting HELLO" 
export HELLO="my name is Paul" 

Si ejecutarlo:

[[email protected]]$ bash test.sh 
exporting HELLO 
[[email protected]]$ echo $HELLO 

Nada se imprime desde $HELLO no está definido en la sesión actual. Sin embargo, si la fuente él:

[[email protected]]$ . test.sh 
exporting HELLO 
[[email protected]]$ echo $HELLO 
my name is Paul 

Entonces $HELLO estará disponible en su sesión actual.

+0

Gran ejemplo, pero en este comando: cp /usr/local/1.txt. el punto does representa la fuente? o tiene otro significado en este contexto – mko

+0

En ese contexto, el punto significa 'directorio actual'. Dot es un alias para fuente solo cuando se usa como comando. –

+0

En general, el punto tiene 3 significados diferentes según el contexto. Ver http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/special-chars.html –

4

El operador periodo es un alias para el comando source. Detalles here.

+1

tu enlace dice: >> ... source es un sinónimo de dot/period '.' en bash, pero no en POSIX sh, por lo que para una compatibilidad máxima use el punto. ... << Encontré esa información útil – eli

1

Bastante difícil de decir sin más contexto, pero un uso es el archivo específico de Bash .bash_profile para incluir el archivo más genérico (en lo que respecta a las conchas Bourne) .profile, ya que cuando Bash encuentra el primero, no carga el segundo por sí mismo.

Cuestiones relacionadas