logo sinuh
 

Inicio arrow Conocimiento arrow Curso GNU/Linux desde cero arrow Entrega 36. Personalización del entorno (II).
Entrega 36. Personalización del entorno (II). Imprimir
Por Luis García Galván   
sábado, 27 ene 2007 09:44

CURSO DESDE 0 DE GNU/LINUX. Versión 2.


Entrega 36. Personalización del entorno (II).


		% gotta light? 		
No match.

Continuamos, Yo quiero definir mis propias variables.


Para definir nuestras propias variables, que se usen en el entorno de ejecución, lo tenemos muy fácil. Es tan sencillo como:


Nombre=Valor


Donde nombre es el nombre de la variable y valor una cadena. Si necesitamos tener espacios en el valor debemos usar las comillas, ya sean dobles o simples.


matados2k@imperio:~$ FGH=9

matados2k@imperio:~$ echo FGH

FGH

matados2k@imperio:~$ echo $FGH

9

matados2k@imperio:~$


Hay que acordarse siempre de usar el símbolo '$' para ver el contenido de la variable, para cambiar el valor de la variable simplemente la volvemos a definir:


matados2k@imperio:~$ FGH="Soy Matados2k"

matados2k@imperio:~$ echo ¿Quién eres tu? $FGH

¿Quién eres tu? Soy Matados2k

matados2k@imperio:~$


Ahora podéis observar cómo he cambiado su valor y he añadido comillas para poder darle el valor de cadenas con espacios. Es muy importante no dejar espacios entre el nombre de la variable, el '=' y el valor, o si no:


matados2k@imperio:~$ FGH = 9

bash: FGH: command not found

matados2k@imperio:~$ FGH= 9

bash: 9: command not found

matados2k@imperio:~$ FGH=Hola soy yo

bash: soy: command not found

matados2k@imperio:~$


Pero definir así una variable tiene la limitación de que sólo funcionará en esa variable en esa ejecución de bash, y si lanzamos un proceso que a su vez lance procesos hijos no tendrán acceso a esa variable:


matados2k@imperio:~$ FGH=9

matados2k@imperio:~$ bash

matados2k@imperio:~$ echo $FGH



matados2k@imperio:~$ exit

exit

matados2k@imperio:~$ echo $FGH

9

matados2k@imperio:~$


En este ejemplo lo vemos claramente, primero definimos la variable, arrancamos otra ejecución de 'bash' dentro de 'bash' e intentamos visualizar la variable, la nueva ejecución de 'bash' no ha heredado la variable... si salimos de ella y volvemos a la ejecución de 'bash' original sí podemos visualizarla.


Voy a llegar a todos lados, lo vais a ver.


Pues así esto no es de mucha ayuda, así que vamos a ver una nueva forma de definir nuestra variable o simplemente de ampliarla.


export variable[=valor]

declare -x variable[=valor]


En este caso es opcional definirle un valor porque la variable puede haberse declarado con anterioridad, tanto la primera como la segunda forma hacen lo mismo y la más usada es la primera:


matados2k@imperio:~$ export FGH

matados2k@imperio:~$ bash

matados2k@imperio:~$ echo $FGH

9

matados2k@imperio:~$


Veamos lo mismo pero con declare:


matados2k@imperio:~$ export FGH=9

matados2k@imperio:~$ declare -x HGF=6

matados2k@imperio:~$ echo $HGF

6

matados2k@imperio:~$ bash

matados2k@imperio:~$ echo $HGF

6

matados2k@imperio:~$


Pues ahora quiero eliminarlas.


También podemos destruir las variables de la siguiente forma:


unset nombre


Veamos un ejemplo:


matados2k@imperio:~$ unset HGF

matados2k@imperio:~$ unset FGH

matados2k@imperio:~$ echo $FGH $HGF



matados2k@imperio:~$


En definitiva, rápido, fácil y sencillo.


Un momento, para el carro que te he calado.


Si hacéis pruebas y por ejemplo ejecutáis un terminal exportáis una variable y luego lo cerráis, se pierde la variable o bien abrís dos sesiones de consola en distintos terminales, veréis que lo que se exporta en una no se ve en la otra. ¿Esto por qué?


Porque la exportación se produce de padres a hijos. Entonces, ¿cómo definimos una variable para todos y para siempre? Pues en los ficheros de arranque como '~/.bashrc' para todas las sesiones de un usuario y en '/etc/profile' si quieres que sea efectivo para todo el mundo y todo solucionado.


Muy bien, y todo este rollo ¿Para qué me vale?.


Pues por ejemplo para cambiar una variable de entorno muy importante, para personalizar nuestro propio entorno, valga la redundancia. Esta variable es una de la más importantes y se llama PATH:


matados2k@imperio:~$ echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

matados2k@imperio:~$


PATH es un listado de rutas separadas por ':' donde los intérpretes de comando buscarán los comandos a ejecutar. Por ejemplo, cuando ejecutamos 'ls' , lo primero que hará 'bash' es buscarlo en '/usr/local/bin', como no lo encuentra lo buscará '/usr/bin' donde tampoco está, y finalmente lo encontrará en '/bin' donde sí está y lo ejecuta. ¿Qué pasaría si elimino '/bin' de la ruta y ejecuto 'ls'?


matados2k@imperio:~$ PATH=/usr/local/bin:/usr/bin:/usr/bin/X11:/usr/games

matados2k@imperio:~$ ls

bash: ls: command not found

matados2k@imperio:~$


Vaya, ahora tendría que ejecutar '/bin/ls' para que fuera efectivo:


matados2k@imperio:~$ /bin/ls

2805-fantasy.jpg

...

XF86Config-4ACTUAL

xmms-playlist

matados2k@imperio:~$ PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

matados2k@imperio:~$


Así que mejor lo dejo como estaba :). Si queremos que mire en algún directorio más aparte de los ya definidos, la forma correcta sería:


export PATH=$PATH:Nueva_ruta


Vamos a ver un ejemplo donde me defino un nuevo directorio con un script muy simple:


matados2k@imperio:~$ cd curso

matados2k@imperio:~/curso$ mkdir miscomandos

matados2k@imperio:~/curso$ echo echo Quien quiere las come quien no las deja > ./miscomandos/lentejas

matados2k@imperio:~/curso$ chmod +x ./miscomandos/lentejas

matados2k@imperio:~/curso$ ./miscomandos/lentejas

Quien quiere las come quien no las deja

matados2k@imperio:~/curso$ PATH=$PATH:/home/matados2k/curso/miscomandos/

matados2k@imperio:~/curso$ lentejas

Quien quiere las como quien no las deja

matados2k@imperio:~/curso$ echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/matados2k/curso/miscomandos/

matados2k@imperio:~/curso$


Como veis un ejemplo muy estúpido que nos muestra de forma muy clara y contundente la gran utilidad que tiene manejar estas variables de entorno y saber dónde definirlas para que queden para siempre.


Despedida.


¡Ohh!... Se nos vuelve a acabar el espacio de esta semana justo cuando viene lo mejor, pero qué malo que soy. En la siguiente entrega vamos a profundizar más en esta variable y otras muy interesantes que nos permitirán modificar la información de nuestro 'prompt', no me faltéis.


Agradecimientos:

· Revisión del documento: karuchi (Carolina García).


Página oficial y dominio de mi propiedad http://matados2k.es

Matados'2k Usuario y moderador de foro.noticias3d.com

Matados'2k Usuario y moderador de www.sinuh.org

,

matados2k (arroba) gmail (punto) com


Este documento está sometido a la licencia de creative commons en su variante “Reconocimiento-NoComercial-SinObraDerivada 2.1 España” . Es de agradecer que se comunique al autor el uso de este documento en otro medio y se debe incluir de forma obligatoria este recuadro y los agradecimientos.


Comentario[s]

Sólo los usuarios registrados pueden escribir comentarios.
Por favor valídate o regístrate.

Powered by AkoComment 2.0!




© 2002-2005 SINUH - Comunidad GNU/Linux de Extremadura
Este portal utiliza Mambo
DHTML / JavaScript Tree by TwinHelix Designs

Para contactar con nosotros envía un correo a
info
Licencia Creative Commons
Los contenidos de este portal, salvo indicación en contra, están sujetos a una licencia de Creative Commons.

Los logotipos y marcas que aparecen son propiedad de sus respectivos dueños.

Las opiniones y declaraciones de las personas reflejadas en los foros y comentarios son propiedad y responsabilidad de sus autores, no identificando la opinión de SINUH y excluyendo de cualquier responsabilidad a esta asociación.
Ahora 821 visitantes
Advertisement