Explorador
Concepto

Variables, comillas y códigos de salida

Cómo se heredan las variables de entorno, la diferencia entre comillas simples y dobles, y cómo encadenar comandos según su resultado.

Actualizado el

En esta guía

Variables de entorno

nombre="Ana"
echo $nombre
bash -c 'echo "[$nombre]"'       # vacío: el proceso hijo no la ve
export nombre
bash -c 'echo "[$nombre]"'       # ahora sí: [Ana]

env | head                       # todas las variables de entorno
echo $HOME $USER $PWD

export hace que la variable se herede a los procesos hijos. Sin export, solo existe en la shell actual.

En la asignación no hay espacios alrededor del =. nombre = "Ana" intenta ejecutar un comando llamado nombre.

Comillas

echo "Hola $USER"      # dobles: expande variables → Hola ana
echo 'Hola $USER'      # simples: texto literal → Hola $USER

Por la misma razón, al crear un archivo con un heredoc se escribe << 'EOF' con comillas: evitan que la shell expanda $USER antes de guardarlo en el archivo.

Códigos de salida

Todo comando devuelve un número: 0 es éxito, cualquier otro valor es error. $? guarda el del último comando.

ls /tmp;      echo $?     # 0
ls /noexiste; echo $?     # 2

Encadenar según el resultado

Operador Ejecuta el siguiente comando
&& Solo si el anterior tuvo éxito
|| Solo si el anterior falló
; Siempre
mkdir prueba && echo "creada"
cd /noexiste || echo "no pude entrar"
echo uno; echo dos