@yo Vale, pero entonces pierdo las variables que había definido ya en mi script, porque estoy ejecutándolo en un nuevo bash, ¿no?
Y terminado el script, ¿debo des-exportar la función para que desaparezca?
@yo Vale, pero entonces pierdo las variables que había definido ya en mi script, porque estoy ejecutándolo en un nuevo bash, ¿no?
Y terminado el script, ¿debo des-exportar la función para que desaparezca?
@microblogc si las exportas aparecen en los subshells, pero sí:
$ A=a
$ echo $A
a
$ bash -c 'echo $A'
$
Si ejecutas tu script con ./script, eso se ejecuta en un subproceso y su entorno se pierde al finalizar. Si lo ejecutas con '. script', se ejecuta en el mismo entorno en el que estás modificándolo.
Recomiendo usar '. script' sólo cuando es estrictamente necesario; precisamente por necesitar afectar al entorno o (muy raramente) por rendimiento.
@microblogc creo que ./script debería ser más o menos equivalente, no se me ocurren casos (fuera de lo de querer afectar el entorno o no querer pagar subprocesos) en los que usar . sea una ventaja. Pero no es un tema que domine 100%