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