Variables de entorno
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=\1:1m:1c:1f:1s:1b:2:\3: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).
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. |
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.