jueves, 6 de junio de 2013

[Shell] Variables de entorno Linux

Hemos hablado en algunas ocasiones de las variables de entorno pero no las hemos tocado a fondo,por ejemplo el $PS1,$PS2,$LS_COLORS,etc.

Las variables de entorno cambian el comportamiento del sistema,un tanto en modo shell y también en modo gráfico ya que se definen variables que pueden modificar el comportamiento del sistema total.

Un ejemplo de ello son las locales,variables de entorno local de lenguaje,en mi caso:

es_MX.utf8

Las variables de entorno son variables de lenguaje de programación,en este caso Bash pero puede ser sh,tcsh,etc dependiendo de la Shell que uses, en bash se definen las variables así:

variable=valor

Las variables que usamos en el lenguaje de programación bash mediante scripts,se aislan en el script,por ejemplo si creamos un script que  contenga:

#/bin/bash

hola="hola"
mundo="mundo"

echo $hola $mundo


Y lo ejecutamos:

bash holamundo.sh

Se debería asignar el valor "hola" a la variable hola al ejecutar el script,así que si en la linea de comandos escribiéramos:

echo $hola

Debería imprimir el valor de hola que le dimos en el script,pero no,porque se aisla su contenido en el mismo script,en cambio si en la linea de comandos defiriéramos una variable:

hola="hola"

Y la imprimiéramos

echo $hola



Si nos mostraría resultados,esto es porque la linea de comandos es una consola dinámica para bash,como la de python por ejemplo.

Las variables de entorno son variables que usa el sistema,estas son definidas con mayúsculas y las define automaticamente el sistema o los programas que las usan,las variables mas comunes son:

HOME # Muestra nuestro home

PWD # Muestra el lugar donde estamos

OLDPWD # Muestra el ultimo lugar donde estuvimos(se define cuando visitamos mas de dos lugares en el sistema,con el comando cd)

TERM # Muestra la terminal por defecto

LOGNAME # Muestra el nombre del usuario actual

LANG # Muestra el lenguaje

DESKTOP_SESSION # Muestra la sesión gráfica(entorno de escritorio)

SHELL # Muestra la sesión de linea de comandos(shell)

PATH # Muestra el lugar donde se encuentran los programas ejecutables

LS_COLORS # Muestra los colores que usan los programas con argumento (--color=auto)

PS1 # Muestra la configuracion del entorno (shell)

PS2 # Muestra la configuracion del entorno (shell) al acceder al PS2

Esto no solo es de Linux,GNU/Linux y todos los *nix que usan Bash,esto también existe en Windows/MS-DOS.

Para definir una variable de entorno se usa el comando

export VARIABLE="VALOR"

Por ejemplo

export PDF="/home/$LOGNAME/Descargas/pdf"

Y para acceder seria por ejemplo:

cd $PDF

Otro ejemplo es por ejemplo añadir rutas de ejecutables,por ejemplo cuando trabajamos con Perl:

Nota:En este caso estamos modificando una variable de entorno y se usa:

VAR="$VAR:mas valores"

Por ejemplo:

PATH="home/$LOGNAME/perl5/bin:$PATH" # PATH=VAR : $PATH

Para ver todas las variables de entorno o casi todas tecleamos:

env

o

printenv

Y para guardar la variable de entorno la metemos en nuestro bashrc:

echo 'export VARIABLE="VALOR"' >> ~/.bashrc
O

nano ~/.bashrc # nano o {vim,gedit,VI,kate,joe,etc}

Y exportamos las variables que queramos.

Eso es todo :D

Nota:Cuidado al modificar variables de entorno,en especial(PATH)

4 comentarios:

  1. Genial!..

    Off-topic: haz utilizad Crunchbang!?.. Cheee, es Wheezy pero en mi laptop tengo bastante problemas con la RED.. se me desconecta mucho mi eth0 y wlan0 y tengo q andar a cada rato haciendole un /etc/init.d/servicio restart o en casos de estarlos parando y demas...

    Con Debian 7 te pasa este problema!?

    Tengo una Toshiba Satellite Cs655-5541.

    Saludos!

    ResponderBorrar
    Respuestas
    1. No no lo he utilizado.

      Y no, en Debian Wheezy no tengo ese tipo de problemas,pero mas que por la versión de sistema es por el tipo de drivers que usa,yo tengo un adaptador BCM4313 para wifi y en ethernet un Realtek RTL8101E/RTL8102E.

      Para ver los tuyos,en terminal:

      lspci | grep Network && lspci | grep Ethernet

      No se si estés usando dirvers libres o privativos,en todo caso son mejores los libres pero en muchas ocasiones no funcionan bien por la configuración del kernel.

      Puedes intentar con Debian Wheezy creo que existe una versión live para que veas si tienes el mismo tipo de problemas :D.

      Borrar
  2. Aqui la salida del comando dado:

    02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)
    01:00.0 Ethernet controller: Atheros Communications Inc. AR8152 v2.0 Fast Ethernet (rev c1)

    ResponderBorrar
  3. Usas un Realtek para el wifi,esta en el paquete firmware-realtek,pero lo mas seguro es que ya lo tengas instalado porque dices que si tienes wifi,asi que lo mas seguro es que sea un fallo de los parámetros del kernel,aun asi no estoy seguro,puedes ver si hay un error con este comando:

    dmesg | grep --color Realtek

    ResponderBorrar

Los comentarios serán revisados antes de ser publicados.