script programas programacion pasar parametros operaciones español ejemplos comando aritmeticas bash shell unix .bash-profile

programas - ¿Volver a cargar.profile en script bash shell(en Unix)?



shell script linux (5)

El script bash se ejecuta en una subshell separada. Para que esto funcione, también necesitará obtener este otro script.

Soy nuevo en las secuencias de comandos de shell bash, y he encontrado un desafío. Sé que puedo volver a cargar mi archivo ".profile" con solo hacer:

. .profile

pero estoy tratando de ejecutar lo mismo en un script bash que estoy escribiendo y simplemente no está funcionando. ¿Algunas ideas? ¿Algo más que pueda proporcionar para aclarar?

Gracias


Intenta esto para volver a cargar tu caparazón actual:

source ~/.profile


Prueba esto:

cd source .bash_profile


Se producen un par de problemas cuando se intenta cargar / descargar el archivo ~ / .profile. [Esto se refiere a Ubuntu Linux - en algunos casos los detalles de los comandos serán diferentes]

  1. ¿Estás ejecutando esto directamente en la terminal o en un script?
  2. ¿Cómo se ejecuta esto en un script?

Anuncio. 1)

Ejecutar esto directamente en la terminal significa que no habrá subcategoría creada. Entonces puedes usar dos comandos:

source ~/.bash_profile

o

. ~/.bash_profile

En ambos casos, esto actualizará el entorno con los contenidos del archivo .profile.

Anuncio 2) Puede iniciar cualquier secuencia de comandos bash ya sea 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 solo será visible para el proceso de subshell. Después de terminar el comando de subshell, no se aplicarán ninguna de las exportaciones, etc. ESTE ES UN ERROR COMÚN Y CAUSA QUE MUCHOS DESARROLLADORES PIERDEN MUCHO TIEMPO.

Para que los cambios aplicados en el script tengan efecto en el entorno global, el script debe ejecutarse con

.myscript.sh

mando.

Para asegurarse de que su script no se ejecuta 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 borre algunos de los malentendidos más comunes! : D ¡Buena suerte!


Tratar:

#!/bin/bash # .... some previous code ... # help set exec | less set -- 1 2 3 4 5 # fake command line arguments exec bash --login -c '' echo $0 echo $@ echo my script continues here '' arg0 "$@"