View previous topic :: View next topic |
Author |
Message |
ppkombo61 n00b
Joined: 14 Feb 2012 Posts: 66
|
Posted: Tue Sep 10, 2013 8:15 pm Post subject: exportar variable local a ambiente - FINALIZADO - |
|
|
Hola:
Con el comando export puedo convertir una variable local a otra de ambiente, con lo cual al abrir otro terminal tendria que estar disponible.
Si hago por ejemplo export mesa=madera tengo la variable en el shell actual, pero al abrir otra no.
Segun lo que he leido con eso bastaria, pero no me funciona.
¿Donde esta el error?
Gracias.
Last edited by ppkombo61 on Wed Sep 11, 2013 12:14 am; edited 1 time in total |
|
Back to top |
|
|
ek balam n00b
Joined: 11 May 2008 Posts: 35 Location: México
|
Posted: Tue Sep 10, 2013 9:52 pm Post subject: Re: exportar variable local a ambiente |
|
|
ppkombo61 wrote: | Hola:
Con el comando export puedo convertir una variable local a otra de ambiente, con lo cual al abrir otro terminal tendria que estar disponible.
Si hago por ejemplo export mesa=madera tengo la variable en el shell actual, pero al abrir otra no.
Segun lo que he leido con eso bastaria, pero no me funciona.
¿Donde esta el error?
Gracias. |
Hola, usando la terminología que usas... cada shell es un ambiente... es decir... al ejecutar... export mesa=madera... haces la variable mesa accesible a otros programas o scripts que corren en el ambiente (shell).
Para hacer que todas tus shells tengan la variable mesa... tendrias que agregar el comando export mesa=madera al archivo ~/.bashrc ó ~/.bash_profile ... según el tipo de login...
o así lo entiendo yo...
Saludos |
|
Back to top |
|
|
agdg Guru
Joined: 15 Aug 2010 Posts: 320
|
Posted: Tue Sep 10, 2013 10:18 pm Post subject: |
|
|
Mientras escribía la respuesta respondió el compañero, de todas formas ya puestos... ahí va:
Cada shell tiene su propio entorno, independiente al de cualquier otro. De hecho puedes modificar las variables de entorno de un shell sin afectar a las de otro shell. Veamoslo con una prueba:
Abrir un shell:
Code: | agd@agd-desktop ~ $ env | grep TERM
TERM=xterm
COLORTERM=gnome-terminal
agd@agd-desktop ~ $ TERM=test-it
agd@agd-desktop ~ $ env | grep TERM
TERM=test-it
COLORTERM=gnome-terminal |
Abrir otro shell:
Code: | agd@agd-desktop ~ $ env | grep TERM
TERM=xterm
COLORTERM=gnome-terminal |
¿Qué diferencia existe entonces entre una variable local y una global? Las variables locales solo existen en el shell donde se han creado, las variables globales son heredables, es decir, si se invoca un shell hijo este heredará las variables globales del shell padre, pero no las variables locales. Veamoslo con otro ejemplo:
Code: | agd@agd-desktop ~ $ export x=0
agd@agd-desktop ~ $ y=1
agd@agd-desktop ~ $ echo $x $y
0 1
agd@agd-desktop ~ $ bash
agd@agd-desktop ~ $ echo $x $y
0
agd@agd-desktop ~ $ exit
exit
agd@agd-desktop ~ $ echo $x $y
0 1 |
En los scripts a veces se exportan variables porque se ejecutan procesos en segundo plano que deben tener acceso a variables del script principal.
Si necesitas comunicar algo a otros scripts o shell, usa tuberías; aquí no me enrollo mucho: la tubería se crea, se escribe en ella y permanece en espera a que otro programa lea su contenido. Te dejo con un ejemplo:
Code: | agd@agd-desktop /tmp $ pipe=/tmp/pipe_1; mkfifo $pipe; for i in $(seq 0 20 100); do echo $i > $pipe & cat $pipe; done
[1] 6606
0
[1]+ Hecho echo $i > $pipe
[1] 6608
20
[1]+ Hecho echo $i > $pipe
[1] 6610
40
[1]+ Hecho echo $i > $pipe
[1] 6612
60
[1]+ Hecho echo $i > $pipe
[1] 6614
80
[1]+ Hecho echo $i > $pipe
[1] 6616
100
[1]+ Hecho echo $i > $pipe
agd@agd-desktop /tmp $ |
_________________ Antonio Guillen · USAM · Un SysAdmin Más |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|