Apuntes sobre Bash

No es un bug, es una característica del shell.

Comandos útiles para gestionar el entorno en Bash

Este anexo complementa la lección sobre variables de entorno, presentando comandos clave que te permiten crear archivos, cargar configuraciones, gestionar el caché de comandos y entender cómo Bash interactúa con el entorno del sistema.

touch: crea archivos vacíos o actualiza su marca temporal

touch archivo.txt
  • Si el archivo no existe, lo crea vacío.
  • Si el archivo ya existe, actualiza su fecha de modificación (timestamp).
touch uno.txt dos.txt tres.txt

Nota: touch no ejecuta ni carga nada en el entorno. Solo asegura que un archivo exista o actualiza su fecha.

source (.): ejecuta scripts en el entorno actual

source archivo.sh
# o
. archivo.sh
  • Ejecuta el contenido del archivo dentro del shell actual.
  • Las variables, alias o funciones definidas quedan disponibles después.

Nota: Usa source tras editar archivos como .bashrc o .bash_aliases para aplicar cambios sin reiniciar la terminal.

hash: gestiona el caché de comandos

hash         # Muestra los comandos cacheados y sus rutas
hash -r      # Limpia el caché
  • Bash guarda en caché la ruta de los comandos.
  • Si instalas un nuevo programa o modificas $PATH, usa hash -r.

which, type, command -v: localiza y describe comandos

which python
type python
command -v python
  • which: muestra la ruta del ejecutable (menos confiable).
  • type: indica si es un alias, función o comando externo.
  • command -v: más fiable y apto para scripts.

env: ejecuta comandos con variables de entorno modificadas

env                   # Muestra todas las variables de entorno
env VAR=valor cmd     # Ejecuta cmd con esa variable
env -i cmd            # Ejecuta cmd con entorno vacío
  • Ver variables activas.
  • Probar un entorno limpio o temporal.

printenv y export: consulta y define variables de entorno

printenv            # Lista todas las variables de entorno
printenv VAR        # Muestra una variable específica
export VAR=valor    # Define o actualiza una variable

Listar todas las variables del entorno

declare -p
compgen -v
(set -o posix ; set) | less

Ejemplo práctico de varios comandos

echo 'export SALUDO="¡Hola desde Bash!"' > config.sh
source config.sh
echo $SALUDO
touch log.txt
which bash
hash -r

Persistir variables en .bashrc

nano ~/.bashrc

Agrega:

export EDITOR=nano
export PATH="$PATH:$HOME/bin"
export LOG_DIR="$HOME/logs"
source ~/.bashrc

Script que define variables para su entorno

#!/bin/bash
export SALUDO="Hola, mundo"
export DIA=$(date +%A)
echo "Mensaje: $SALUDO"
echo "Hoy es $DIA"

Nota: Estas variables no persisten tras la ejecución si usas bash script.sh.

Cómo conservar variables tras ejecutar un script

# config.sh
export USERNAME="usuario"
export IDIOMA="español"

# Terminal
source config.sh
echo $USERNAME

Script que usa variables de entorno

#!/bin/bash
echo "Usuario actual: $USER"
export RUTA_BACKUP="$HOME/backups"
mkdir -p "$RUTA_BACKUP"
echo "Backup guardado en $RUTA_BACKUP/backup.txt" > "$RUTA_BACKUP/backup.txt"

Resumen visual

Acción Resultado
VAR=valor Sólo en la terminal actual
export VAR=valor Disponible en procesos hijos
source script.sh Variables conservadas en tu entorno
bash script.sh Variables viven sólo dentro del script

Buenas prácticas al gestionar el entorno en Bash

  • Declara variables persistentes en ~/.bashrc o ~/.bash_profile.
  • Usa export solo cuando necesites herencia en procesos hijos.
  • Recarga configuraciones con source tras modificarlas.
  • Evita sobreescribir variables globales como PATH sin precaución.
  • Documenta variables en tus scripts: qué hacen y por qué las usas.
  • Prefiere command -v sobre which en scripts portables.
  • Limpia el caché con hash -r si cambias rutas de comandos.
TOP