Soy nuevo en bash shell scripting y me he encontrado con un desafío. Sé que puedo volver a cargar mi archivo ".profile" simplemente haciendo:
. .profile
pero estoy tratando de ejecutar lo mismo en un script bash que estoy escribiendo y simplemente no funciona. ¿Algunas ideas? ¿Algo más que pueda proporcionar para aclarar?
Gracias
bash
shell
unix
.bash-profile
Amir Rustamzadeh
fuente
fuente
Respuestas:
Pruebe esto para recargar su shell actual:
fuente
source
comando ejecutará el archivo como un script ... En el peor de los casos, si alguien usara una asignación de variable comoMyVar="$foo$MyVar"
en su bash_profile, entoncessource ~/.profile
daría el resultado finalMyVar="$foo$MyVar$MyVar"
, por$MyVar
lo tanto, tendría un valor incorrecto después. (Independientemente de las malas prácticas, solo solicite una solución alternativa)Prueba esto:
fuente
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]
Anuncio. 1)
Ejecutar esto directamente en la terminal significa que no se creará ningún subshell. Entonces puedes usar cualquiera de los dos comandos:
o
En ambos casos, esto actualizará el entorno con el contenido del archivo .profile.
Anuncio 2) Puede iniciar cualquier script bash llamando
o
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
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)
¡Espero que esto aclare algunos de los malentendidos comunes! : D ¡Buena suerte!
fuente
El script bash se ejecuta en una subshell separada. Para que esto funcione, también necesitará obtener este otro script.
fuente
.profile
archivo de una forma similar a esta:. $HOME/.profile
y deberá iniciar su secuencia de comandos también. Algo así como. /path/to/yourscript
Tratar:
fuente