Unix / Linux - Entorno

En este capítulo, discutiremos en detalle sobre el entorno Unix. Un concepto importante de Unix es elenvironment, que se define mediante variables de entorno. Algunos son configurados por el sistema, otros por usted, otros por el shell o cualquier programa que cargue otro programa.

Una variable es una cadena de caracteres a la que le asignamos un valor. El valor asignado podría ser un número, texto, nombre de archivo, dispositivo o cualquier otro tipo de datos.

Por ejemplo, primero establecemos una variable TEST y luego accedemos a su valor usando el echo comando -

$TEST="Unix Programming"
$echo $TEST

Produce el siguiente resultado.

Unix Programming

Tenga en cuenta que las variables de entorno se establecen sin utilizar el $sign pero al acceder a ellos usamos el signo $ como prefijo. Estas variables conservan sus valores hasta que salimos del caparazón.

Cuando inicia sesión en el sistema, el shell pasa por una fase llamada initializationpara configurar el medio ambiente. Este suele ser un proceso de dos pasos que implica que el shell lea los siguientes archivos:

  • /etc/profile
  • profile

El proceso es el siguiente:

  • El shell comprueba si el archivo /etc/profile existe.

  • Si existe, el shell lo lee. De lo contrario, este archivo se omite. No se muestra ningún mensaje de error.

  • El shell comprueba si el archivo .profileexiste en su directorio personal. Su directorio de inicio es el directorio en el que comienza después de iniciar sesión.

  • Si existe, el shell lo lee; de lo contrario, el caparazón lo salta. No se muestra ningún mensaje de error.

Tan pronto como se hayan leído ambos archivos, el shell muestra un mensaje:

$

Este es el indicador donde puede ingresar comandos para ejecutarlos.

Note - El proceso de inicialización de shell detallado aquí se aplica a todos Bourne shells de tipo, pero algunos archivos adicionales son utilizados por bash y ksh.

El archivo .profile

El archivo /etc/profile es mantenido por el administrador del sistema de su máquina Unix y contiene la información de inicialización de shell requerida por todos los usuarios en un sistema.

El archivo .profileestá bajo tu control. Puede agregar tanta información de personalización de shell como desee a este archivo. El conjunto mínimo de información que necesita configurar incluye:

  • El tipo de terminal que está utilizando.
  • Una lista de directorios en los que ubicar los comandos.
  • Una lista de variables que afectan la apariencia de su terminal.

Puedes comprobar tu .profiledisponible en su directorio personal. Ábralo usando el editor vi y verifique todas las variables establecidas para su entorno.

Configuración del tipo de terminal

Normalmente, el tipo de terminal que está utilizando lo configura automáticamente el login o gettyprogramas. A veces, el proceso de configuración automática adivina su terminal incorrectamente.

Si su terminal está configurada incorrectamente, la salida de los comandos puede parecer extraña, o es posible que no pueda interactuar con el shell correctamente.

Para asegurarse de que este no sea el caso, la mayoría de los usuarios configuran su terminal al mínimo común denominador de la siguiente manera:

$TERM=vt100
$

Establecer la RUTA

Cuando escribe cualquier comando en el símbolo del sistema, el shell tiene que localizar el comando antes de que pueda ejecutarse.

La variable PATH especifica las ubicaciones en las que el shell debe buscar comandos. Por lo general, la variable Path se establece de la siguiente manera:

$PATH=/bin:/usr/bin
$

Aquí, cada una de las entradas individuales separadas por dos puntos (:)son directorios. Si solicita al shell que ejecute un comando y no puede encontrarlo en ninguno de los directorios dados en la variable PATH, aparece un mensaje similar al siguiente:

$hello
hello: not found
$

Hay variables como PS1 y PS2 que se analizan en la siguiente sección.

Variables PS1 y PS2

Los caracteres que muestra el shell como símbolo del sistema se almacenan en la variable PS1. Puede cambiar esta variable para que sea lo que desee. Tan pronto como lo cambie, el shell lo usará a partir de ese momento.

Por ejemplo, si emitió el comando:

$PS1='=>'
=>
=>
=>

Su mensaje se convertirá en =>. Para establecer el valor dePS1 para que muestre el directorio de trabajo, emita el comando -

=>PS1="[\[email protected]\h \w]\$"
[[email protected] /var/www/tutorialspoint/unix]$
[[email protected] /var/www/tutorialspoint/unix]$

El resultado de este comando es que el indicador muestra el nombre de usuario del usuario, el nombre de la máquina (nombre de host) y el directorio de trabajo.

Hay unos cuantos escape sequencesque se pueden utilizar como argumentos de valor para PS1; trate de limitarse a lo más crítico para que el mensaje no lo abrume con información.

No Señor. Secuencia de escape y descripción
1

\t

Hora actual, expresada como HH: MM: SS

2

\d

Fecha actual, expresada como día de la semana Mes Fecha

3

\n

Nueva línea

4

\s

Entorno de shell actual

5

\W

Directorio de trabajo

6

\w

Ruta completa del directorio de trabajo

7

\u

Nombre de usuario del usuario actual

8

\h

Nombre de host de la máquina actual

9

\#

Número de comando del comando actual. Aumenta cuando se ingresa un nuevo comando

10

\$

Si el UID efectivo es 0 (es decir, si ha iniciado sesión como root), finalice el mensaje con el carácter #; de lo contrario, use el signo $

Puede realizar el cambio usted mismo cada vez que inicie sesión, o puede hacer que el cambio se realice automáticamente en PS1 agregándolo a su .profile archivo.

Cuando emite un comando que está incompleto, el shell mostrará un indicador secundario y esperará a que complete el comando y presione Enter otra vez.

El mensaje secundario predeterminado es > (el signo mayor que), pero se puede cambiar redefiniendo el PS2 variable de shell -

A continuación se muestra el ejemplo que utiliza el indicador secundario predeterminado:

$ echo "this is a
> test"
this is a
test
$

El ejemplo que se muestra a continuación redefine PS2 con un mensaje personalizado:

$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

Variables de entorno

A continuación se muestra la lista parcial de variables de entorno importantes. Estas variables se configuran y se accede a ellas como se menciona a continuación:

No Señor. Variable y descripción
1

DISPLAY

Contiene el identificador de la pantalla que X11 los programas deben usar por defecto.

2

HOME

Indica el directorio de inicio del usuario actual: el argumento predeterminado para el cd built-in mando.

3

IFS

Indica el Internal Field Separator que utiliza el analizador para la división de palabras después de la expansión.

4

LANG

LANG se expande a la configuración regional predeterminada del sistema; LC_ALL se puede utilizar para anular esto. Por ejemplo, si su valor espt_BR, el idioma se establece en portugués (brasileño) y la configuración regional en Brasil.

5

LD_LIBRARY_PATH

Un sistema Unix con un enlazador dinámico, contiene una lista separada por dos puntos de directorios que el enlazador dinámico debe buscar para objetos compartidos cuando construye una imagen de proceso después de exec, antes de buscar en cualquier otro directorio.

6

PATH

Indica la ruta de búsqueda de comandos. Es una lista de directorios separados por dos puntos en los que el shell busca comandos.

7

PWD

Indica el directorio de trabajo actual según lo establecido por el comando cd.

8

RANDOM

Genera un número entero aleatorio entre 0 y 32,767 cada vez que se hace referencia a él.

9

SHLVL

Se incrementa en uno cada vez que se inicia una instancia de bash. Esta variable es útil para determinar si el comando de salida integrado finaliza la sesión actual.

10

TERM

Se refiere al tipo de pantalla.

11

TZ

Se refiere a la zona horaria. Puede tomar valores como GMT, AST, etc.

12

UID

Se expande al ID de usuario numérico del usuario actual, inicializado al inicio del shell.

A continuación se muestra el ejemplo de muestra que muestra algunas variables de entorno:

$ echo $HOME
/root
]$ echo $DISPLAY

$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$