Herramientas de usuario

Herramientas del sitio


acemu:articulos:articulos_tecnicos:software:introduccion_a_gnu-linux:linux_inicio:terminal

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
acemu:articulos:articulos_tecnicos:software:introduccion_a_gnu-linux:linux_inicio:terminal [2012/01/14 15:06] – [Variables] luisacemu:articulos:articulos_tecnicos:software:introduccion_a_gnu-linux:linux_inicio:terminal [2012/01/15 12:07] (actual) – [Estructuras de control de flujo] luis
Línea 202: Línea 202:
  
 * **'''PATH'''**: rutas en las que el intérprete busca las órdenes a ejecutar cuando no especificamos donde están. * **'''PATH'''**: rutas en las que el intérprete busca las órdenes a ejecutar cuando no especificamos donde están.
 +
 +Debemos((idem)) dejar claro que las variables de entorno son propias del entorno en el que estamos, por lo tanto quedan, son propias del entorno.
 +
 +Ahora bien, hay un tema muy importante y sutil, que es el alcance de las variables de entorno.\\
 +Hay dos tipos de variables de entorno :
 +  * las que podríamos definir como **locales**
 +  * y las que podríamos definir como **globales**
 +
 +Las **locales** solo son accesibles a los comandos que se ejecutan en el shell local, o el shell que nos está atendiendo.\\
 +Las **globales** se trasmiten de padres a hijos...  ok, se complicó no ??, procesos padres...  hijos...
 +
 +
 +En realidad cuando nos referimos a procesos hijos en LINUX, nos referimos a los procesos que son resultado de otro proceso del cual se genera.
 +
 +Por ejemplo, si corro un comando **ls**, el shell es el proceso padre y el ls es el proceso hijo, de hecho, lo que en realidad ocurrió internamente es un **fork**(bifurcación). Lo que hace LINUX cuando larga a correr un programa, es lo siguiente :
 +
 +Primero duplica el proceso que está ejecutando, por ejemplo, si es un shell, lo duplica ejecutando la función **fork()** del sistema, y luego el proceso hijo realiza un **exec()** con lo cual se transforma en el comando **ls** que es lo que queríamos ejecutar.
 +
 +Al ejecutar un **fork()**, el proceso original se duplica, pero cada uno sabe si es padre o es hijo; y es el hijo el que finalmente se transforma en el nuevo proceso que se quería ejecutar.
 +
 +En el proceso de ejecución del **fork()**, se trasmiten sólo las variables **globales** que son las variables que propiamente uno dice que son las variables de entorno.
 +
 +Para que una variable sea de entorno, uno debe exportarla. Uno puede primero crear la variable
 +
 +<file>
 +pepe=123
 +</file>
 +
 +y luego exportarla,
 +
 +<file>
 +export pepe
 +</file>
 +
 +o se pueden hacer las dos cosas juntas,
 +
 +<file>
 +export pepe=123
 +</file>
 +
 +De esa manera, los procesos hijos del proceso donde se creó la variable pepe, también podrán disponer de esa variable. Y ese, es el mecanismo más sencillo de comunicación entre procesos.\\
 +Uno puede invocar un nuevo programa, pasándole argumentos, o simplemente creamos un conjunto de variables de entorno con los datos que el nuevo proceso requiere y el nuevo proceso los toma allí.
 +
  
 == Órdenes == == Órdenes ==
Línea 440: Línea 483:
  
 1 converso\\ 1 converso\\
-perverso\\+preverso\\
 2 verso\\ 2 verso\\
  
acemu/articulos/articulos_tecnicos/software/introduccion_a_gnu-linux/linux_inicio/terminal.1326582403.txt.gz · Última modificación: 2012/01/14 15:06 por luis