Variables de entorno

Estas aquí:
<< Regresar

Variables de entorno

Durante la sesión, el sistema lleva acabo varios hechos del sistema en su memoria. Esta información se conoce como «ambiente» (environment). El ambiente contiene entre otras cosas, rutas, el nombre de usuario, variables del sistema, entre otras.

¿Cómo se establecen las variables de ambiente?

Cuando se inicia sesión en el sistema, un programa en BASH comienza a leer una serie de scripts de configuración conocidos como archivos de arranque (startup files). Estos definen un ambiente general para todos lo usuarios, seguido de más archivos de inicio que definen el de cada usuario de forma individual incluidos en su directorio home. Existen dos tipos de inicio de sesión:

  • Login shell session: Se lleva acabo mediante el inicio de sesión desde la terminal a través de un usuario y su respectivo password.
  • Non-login shell session: Cuando se inicia sesión en una consola virtual, por ejemplo, cuando se emplea una terminal en la GUI.

Login shell session leen uno o más archivos de inicio, los cuales pueden ser alguno de los siguientes:

Archivo Contenido
/etc/profile Script con la configuración global que es aplicada a todos los usuarios.
~/.bash_profile Configuración personal de usuarios. Puede ser empleado para extender o sobre escribir las configuraciones globales.
~/.bash_login Si ~/.bash_profile no es posible encontrarlo, entonces se procede a leer éste archivo.
~/.profile En caso de que ~/.bash_profile o ~/.bash_login no puedan ser encontrados en el sistema, bash leerá éste archivo. Éste es el archivo por defecto para distribuciones basadas en Debian, como Ubuntu.

Non-login shell sessions leen los siguientes archivos:

Archivo Contenido
/etc/bash.bashrc Script de configuración global que aplica a todos los usuarios.
~/.bashrc Archivo personal de usuarios. Puede emplearse para extender o sobreescribir configuraciones en el script global de configuración.

Si desea modificar temporalmente su entorno para la sesión actual de trabajo puede escribir comandos directamente en su BASH. Sin embargo, si desea modificar su entorno de trabajo de un modo más permanente, puede almacenar variables de entorno “permanentes” en los archivos .bash_profile, .bash_login, o .cshrc.

Para mostrar las variables de entorno establecidas actualmente asignadas en su sistema teclee lo siguiente :

env
HISTORY=100
HOME=/home/hack
HZ=100
LOGNAME=hack
MAIL=/var/spool/mail/hack
MANSECTS=:1m:1c:1f:1s:1b:2::3c:3i:3n:3m:3k:3g:3e:3x11:3xt:3 w:3b:9:4:5:7:8
PATH=/usr/bin
SHELL=/bin/bash
TERM=xterm
TZ=EST5EDT

A continuación tenemos la lista de variables más comunes reservadas por el interprete de comandos. Todas ellas tienen un significado especial para el mismo, algunas de ellas solo se pueden leer, a otras se le asignan ciertos valores automáticamente y algunas pierden su significado si le cambiamos los valores que tienen por defecto. Muchas de dichas variables pueden estar ya incluidas en su perfil de usuario. Como ya se mencionó anteriormente en su archivo de perfil de usuario (.bash_profile para los shell Bourne y Korn, y .cshrc para el shell C).

» target=»_blank»>

Variable Significado
CDPATH Especifica los directorios que se han de buscar cuando se escribe un único nombre de directorio sin un nombre de ruta de acceso completo.
HOME Define la ruta de acceso absoluta de su directorio raíz. El sistema utiliza esta información para determinar que el directorio cambie cuando escriba el comando cd sin argumentos.
IFS Una lista de caracteres para separar campos; usado cuando el interprete de comandos separa palabras como parte de una expansion.
MAIL Si este parametro tiene un fichero definido y la variable MAILPATH no esta definida, bash informa al usuario de la llegada de correo al fichero especificado.
MAILPATH Una lista de ficheros separada por comas, en los cuales el interprete de comandos comprueba periodicamente de la llegada de correo.
PATH Una lista de directorios, separados por comas, en los cuales el interprete de comandos busca por comandos
PS1 Prompt principal. El valor por defecto es “’\s-\v\$ ‘
PS2 El prompt secundario. El valor por defecto es ‘> ‘
BASH La ruta de acceso completa usada para ejecutar la instancia actual de bash
BASH ENV Si esta variable esta definida cuando bash es llamado para ejecutar un script, su valor es expandido y usado como el nombre del fichero leido antes de ejecutar el script.
BASH_VERSION El numero de version de bash usada
EUID El identificador numerico de usuario del usuario actual
GROUPS Una matriz que contiene la lista de los grupos a que pertenece el usuario actual
HISTFILESIZE El numero maximo de lineas contenidas en la historia de comandos, por defecto 500
HOSTNAME El nombre de maquina actual
HOSTTYPE Cadena describiendo la maquina que esta ejecutando Bash
MACHTYPE Cadena describiendo el tipo de sistema que esta ejecutando Bash
OLDPWD Directorio previo definido por el comando ‘cd’
OSTYPE Cadena describiendo el sistema operativo que esta ejecutando Bash
PPID El numero de proceso del proceso padre del interprete de comandos
PS3 El valor de esta variable se usa como ‘prompt’
PWD Directorio actual definido por el comando ‘cd’
SECONDS Numero de segundos desde que Bash fue arrancado
SHELLOPTS Lista con opciones de Bash activadas
UID El valor numerico real del usuario actual

Existen dos tipos de comandos comúnmente se encuentran en el ambiente. Ellos son los alias y las funciones en shell, ambos serán explicados en esta sección.

Como establecer la variable PATH

La variable de entorno PATH se usa para ubicar comandos dentro de la jerarquía de directorios de GNU/LINUX. Al fijar PATH se crea un conjunto de directorios fijos que el sistema buscará siempre que un usuario escriba el nombre de un comando.

Por ejemplo, si no tiene establecida ninguna variable PATH y quiere copiar un archivo, tendrá que introducir el nombre de ruta de acceso completo para el comando, /usr/bin/cp. Sin embargo, si ha establecido la variable PATH para incluir el directorio /usr/bin, podrá simplemente escribir cp y el sistema ejecutará siempre el comando. Esto es debido a que su sistema busca el comando cp en todos los directorios nombrados en la variable PATH y lo ejecuta cuando lo encuentra. Para los shell Bourne y Korn, la variable PATH se especifica en el archivo .bash_profile de su directorio personal utilizando la siguiente sintaxis:

PATH=/usr/bin:/home/bin

Variables locales y globales de Shell

Estas variables pueden ser locales y son definidas sólo en el BASH local. Es posible pasar estas variables de locales a globales simplemente exportándolas a su entorno de desarrollo.

Ejemplo:

saludo='Linux Para Todos'
echo $saludo
Linux Para Todos
bash
echo $saludo
exit

Como podemos observar asignamos a la variable “saludo” la cadena “Linux Para Todos” y luego mostramos su contenido. Seguido a ello invocamos una segunda terminal y nuevamente imprimimos el contenido de la variable “saludo”, la cual no es mostrada debido a que es una variable local y no global. Para solucionar este problema se debe exportar la variable local lo cual hara que la variable se convierta en variable global.

Ejemplo:

saludo='Linux Para Todos'
export saludo
bash
echo $saludo
Linux Para Todos
exit

El comando “export” convierte la variable local a global, para excluir la variable recién exportada use el comando «unset».
Ejemplo:

unset saludo

Al igual puedes usarlas para ingresar información a un script, usando argumentos posicionales (se ingresa la información conforme al numero).
Creamos un archivo «.sh».

vi variables.sh

Y presione la tecla Insert.
Ingrese lo siguiente.

#!/bin/bash
#Imprime la fecha
FECHA=$(date +%d/%m/%Y)
#Primer dato que escribe después del script.
USUARIO=$1
#Segundo dato que escribe después del primer dato.
DIRECTORIO=$2
echo "Hola, hoy es $FECHA, es un placer que use linux $USUARIO. Le redirijo a $DIRECTORIO"
cd $DIRECTORIO

Guardamos la información usando Esc y escriba «:wq», posteriormente de enter.
Para finalizar modifique el archivo con chmod que dará los permisos de ejecución y ejecute el script.

chmod +x variables.sh
./variables.sh usuario /home

Alias para el Shell Bash

El comando alias permite al usuario crear atajos a los comandos mas implementados.

Ejemplo:

ls
amsn_received Documents Objetivos.png
RPM-Como.pdf  bin       kernelfedora.pdf

El comando anterior tiene la función de listar el contenido de un directorio, suponga que usted quisiera implementar este comando para ademas de listar el contenido le arroje datos mas relevantes como por ejemplo, permisos de ejecución, numero de enlaces, fecha de creación y tamaño, para ello se implementan los alias de comandos.

Ejemplo:

alias ls='ls -l'
ls
drwx------ 2 hack users 4096 jun 29 09:46 amsn_received
drwxr-xr-x 2 hack users 4096 jun 9 05:01 bin
drwxr-xr-x 2 hack users 4096 jun 9 05:01 Documents
-rwxr-xr-x 1 hack users 64472 jun 1 17:23 Objetivos.png
-rwxr-xr-x 1 hack users 78002 jun 5 15:25 RPM-Como.pdf
-rw-r--r-- 1 hack users 1439863 jun 16 10:38 kernelfedora.pdf

Para eliminar los alias asignados use el comando «unalias».

unalias ls

Funciones de Shell Bash

Las funciones son muy perecidas a los alias pero estas admiten una gama mas amplia de instrucciones para su ejecución. Las funciones se construyen mediante la siguiente sintaxis:

function nombreDeLafuncion() { listaDeComandos; }

Donde:

function: Orden que invoca al comando function, es opcional.
nombreDeLaFunción(): Nombre de la función.
listaDeComandos: Cuerpo de la función.

Construcción de una función:

function listado() { pwd; ls;}

La función anteriormente definida se usa de la siguiente manera:

listado
/home/valdo/lpic/general-linux-2/notes
CVS _whizzy_gl2.notes.fmt _whizzy_gl2.notes.pag

Ejemplos válidos en la declaración de funciones

function look() { pwd; ls; }
function look { pwd; ls; }
look() { pwd; ls;}
look()
> {
> pwd;
> ls;
> }

Ejemplos inválidos en la declaración de funciones

function look() pwd; ls;
look() { pwd; ls }
function look() {pwd ls;}

Video: Sobre las variables de entorno

En el siguiente video se explican las variables de entorno, uso de alias y funciones.

Última actualización: septiembre 18, 2018

Deja un comentario

Facebook
Facebook
Twitter
Visit Us
LinkedIn
YOUTUBE
YOUTUBE