Pregunta:
Escribí el siguiente script para configurar algunas variables de entorno cuando sea necesario.
#!/bin/sh
export BASE=/home/develop/trees
echo $BASE
export PATH=$PATH:$BASE
echo $PATH
Debajo del comando y los resultados que puedo ver en mi terminal: el script se ejecuta, pero las variables no se establecen al final.
~$: ./script.sh
/home/develop/trees
/bin:......:/home/develop/trees
~$: echo $BASE
~$:
¿Qué ocurre? Gracias por adelantado. Mirko
Respuesta:
export
exporta la asignación de variable a procesos secundarios del shell en el que se ejecutó el comando de export
. Su entorno de línea de comandos es el padre del shell del script, por lo que no ve la asignación de variable.
Puede utilizar el .
(o source
) comando bash para ejecutar los comandos de script en el entorno de shell actual y lograr lo que desea, por ejemplo
source ./script.sh
echo "$BASE"
Producirá
/home/develop/trees
El comando de source
, que se ve a menudo en los scripts, es un sinónimo de bash .
, Que es parte de la norma POSIX (de modo .
Está disponible en el tablero, por ejemplo, pero source
no lo es).
. ./script.sh # identical to "source ./script.sh"
( . script.sh
y source script.sh
primero buscarán script.sh
en PATH
, por lo que es más seguro especificar la ruta a script.sh
).