2012-01-19 14 views
6

Yo probé las dos maneras siguientes a la fuente el archivo de propiedadesno es capaz de la fuente de un archivo de propiedades en el script de shell

#!/bin/sh 
. import.properties 
echo $USER_ID 
echo $INPUT_FILE 

Dice:

./test.sh[3]: import.properties: not found 

cuando trató de usar source import.properties le dio el mensaje como :

./test.sh[3]: source: not found. 

Soy muy nuevo en el scripting y env. Por favor, hágame saber lo que me falta aquí?

Respuesta

12

Para ser encontrado por el comando dot ., el archivo debe ser legible (no necesariamente ejecutable) y en su RUTA (y para ser utilizado con seguridad, debe contener script de shell).

Si el archivo está en el directorio actual y . (el directorio, no el comando) no está en su camino, se puede utilizar:

. ./import.properties 

De lo contrario, es necesario que especifique el nombre absoluto de la archivo, o nombre relativo del archivo, o mueva el archivo a un directorio conveniente en su RUTA.

La notación alternativa, source import.properties falla porque no está en el C Shell, y porque no está utilizando Bash. El comando source en el C Shell es el análogo del comando de punto en el shell Bourne. Bash lo permite como sinónimo del comando de punto (o el comando de punto como sinónimo de fuente). Como no se encontró source, podemos suponer con seguridad que su shell no lo admite como un built-in.

+0

Si desea ejecutar este script desde otro directorio, debe usar '. "$ (dirname -" $ 0 ")/import.properties" '. – l0b0

+0

Eso puede o no funcionar; clásicamente, los shells Bourne y Korn no anteponen el nombre del directorio al nombre del comando, pero 'bash' parece hacer eso. –

Cuestiones relacionadas