Surgen un par de problemas al intentar recargar / source ~ / .profile file. [Esto se refiere a Ubuntu Linux - en algunos casos los detalles de los comandos serán diferentes]
- ¿Está ejecutando esto directamente en la terminal o en un script?
- ¿Cómo ejecutas esto en un script?
Anuncio. 1)
Ejecutar esto directamente en la terminal significa que no se creará ningún subshell. Entonces puedes usar cualquiera de los dos comandos:
source ~/.bash_profile
o
. ~/.bash_profile
En ambos casos, esto actualizará el entorno con el contenido del archivo .profile.
Anuncio 2) Puede iniciar cualquier script bash llamando
sh myscript.sh
o
. myscript.sh
En el primer caso, esto creará una subshell que no afectará las variables de entorno de su sistema y serán visibles solo para el proceso de la subshell. Después de finalizar el comando subshell, no se aplicará ninguna de las exportaciones, etc. ESTE ES UN ERROR COMÚN Y CAUSA A MUCHOS DESARROLLADORES QUE PIERDEN MUCHO TIEMPO.
Para que los cambios aplicados en su script tengan efecto en el entorno global, el script debe ejecutarse con
.myscript.sh
mando.
Para asegurarse de que su script no se ejecute en un subshel, puede usar esta función. (De nuevo, el ejemplo es para el shell de Ubuntu)
#/bin/bash
preventSubshell(){
if [[ $_ != $0 ]]
then
echo "Script is being sourced"
else
echo "Script is a subshell - please run the script by invoking . script.sh command";
exit 1;
fi
}
¡Espero que esto aclare algunos de los malentendidos comunes! : D ¡Buena suerte!