Lo que hereda un proceso
Una variable puede quedarse en tu shell o viajar a sus hijos. Al terminar sabrás controlar eso y manejar varios trabajos a la vez.
Primero, la idea completa
Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.
Variables de shell y de entorno
Las variables guardan valores que los procesos leen y usan para cambiar su comportamiento. Se leen poniendo $ delante del nombre: echo $HOME. Hay dos tipos:
- Variables de shell: valen solo en la shell donde se crearon y no se heredan a los procesos hijos. Se crean con
NOMBRE=valor, sin espacios alrededor del=, ysetlas lista todas. - Variables de entorno: están configuradas para toda la shell y sí se heredan a cada proceso que lanza.
export NOMBREconvierte una variable de shell en variable de entorno,unset NOMBREla borra yenvlista solo las de entorno.
Una shell y la bash hija que abre. Crea una variable, ábrele una hija y fíjate qué ve la hija antes y después de export.
Variables comunes
| Variable | Qué guarda |
|---|---|
| HOME | la carpeta personal del usuario actual |
| HOSTNAME | el nombre de la máquina |
| PATH | la lista de carpetas, separadas por :, donde la shell busca los programas |
| PWD · OLDPWD | la carpeta de trabajo actual · la anterior al último cd |
| RANDOM | un entero al azar entre 0 y 32767 |
| SHELL · TERM | la shell en uso · el emulador de terminal |
| UID · USER | el identificador numérico del usuario · su nombre |
| _ | el último argumento de la orden anterior |
| ? · $ · 0 | el código de salida de la última orden · el PID de la shell · el nombre del proceso actual |
Escribes el nombre de un programa. La shell lo busca carpeta por carpeta en PATH, en orden, y ejecuta el primero que encuentra.
Control de trabajos
Por defecto, una orden corre en primer plano (foreground): toma la pantalla y el teclado hasta que termina. El control de trabajos (job control) maneja las órdenes en segundo plano (background):
orden &la lanza directo en segundo plano.- Ctrl+Z detiene la orden en primer plano; luego
bgla reanuda en segundo plano yfgla trae de vuelta al primero. jobslista los trabajos de la shell;ps j -Amuestra todos los procesos;killtermina uno por su número de trabajo (%1) o su PID.- Al cerrar la shell mueren sus trabajos. Para que uno siga corriendo después, se lanza con
nohup.
La vida de un trabajo. Lánzalo y muévelo entre estados; luego cierra la terminal y mira si sobrevive.
Alias y atajos
Un alias acorta una orden que usas mucho: alias e='grep error', y desde ahí e archivo.log equivale a grep error archivo.log. Se quita con unalias e. Para que dure, se pone en ~/.bashrc. En la línea de comandos también hay atajos de teclado:
| Ctrl+A · Ctrl+E | ir al inicio · al final de la línea |
| Ctrl+F · Ctrl+B | un carácter adelante · atrás |
| Alt+F · Alt+B | una palabra adelante · atrás |
| Ctrl+D · Ctrl+H | borrar el carácter actual · el de la izquierda |
| Ctrl+W | borrar la palabra a la izquierda |
| Ctrl+K · Ctrl+U | borrar todo a la derecha · a la izquierda del cursor |
| Ctrl+L | limpiar la pantalla |
| Ctrl+C | cancelar la orden |
| Ctrl+_ | deshacer (solo en bash) |
| Ctrl+R · Ctrl+G | buscar en el historial · cancelar la búsqueda |
Bash, de los años ochenta, es la shell más usada, pero no la más amigable. Algunas alternativas con más funciones: fish, zsh, PowerShell, Oil Shell y Murex.
Antes de leer la respuesta
Tu turno: controla tu shell
Comprueba por ti misma qué hereda una shell hija, crea un alias propio, mueve un trabajo entre primer y segundo plano, y deja corriendo un proceso que sobreviva a que cierres la terminal. El panel muestra las variables y los trabajos de la shell actual.
Comprueba lo que entendiste
Cada respuesta incorrecta explica por qué parece correcta y en qué falla.