Visión general
En las distribuciones modernas de Ubuntu, el intérprete predeterminado tras /bin/sh no es bash, sino dash (Debian Almquist Shell). Esta implementación destaca por prescindir de añadidos superfluos para ofrecer una ejecución extremadamente veloz y un consumo mínimo de memoria RAM y CPU, ciñéndose estrictamente a las especificaciones POSIX. En este artículo desglosaremos su arquitectura, evaluaremos sus particularidades frente a bash mediante ejercicios en consola y aprenderemos a desarrollar scripts limpios, portables y altamente eficientes.
Comprobación del enlace simbólico predeterminado e inspección de dash
Para verificar qué binario respalda la interfaz estándar /bin/sh en Ubuntu, procedemos a inspeccionar sus propiedades con el comando ls -l /bin/sh.
La salida confirma que el enlace simbólico del sistema apunta directamente a dash.

A continuación, validamos el estado del paquete en los registros de APT ejecutando dpkg -l | grep dash.
El identificador de estado ii al inicio de la línea ratifica que el intérprete se encuentra debidamente empaquetado e instalado sin incidencias.

A diferencia de otros intérpretes pensados para sesiones de usuario complejas, dash prioriza la ligereza operativa y la rapidez durante el arranque del sistema operativo.
Podemos verificar la evaluación inmediata de sentencias arbitrarias mediante el parámetro dash -c.
⚙️ [Parámetros de control principales]
-c : Interpreta y ejecuta la cadena de texto suministrada como una instrucción de shell.-s : Lee y procesa órdenes de forma secuencial a través de la entrada estándar (stdin).-e : Aborta inmediatamente la ejecución si cualquier comando devuelve un código de salida distinto de cero.-u : Considera el intento de expandir variables no declaradas como un error crítico e interrumpe el script.-n : Realiza un análisis sintáctico del código para detectar erratas sin llegar a ejecutarlo.-x : Activa la traza en pantalla de cada orden y sus argumentos a medida que se procesan.

Evaluación de comandos internos (built-ins) y variables de entorno
Al procesar scripts de alta concurrencia, prescindir de llamadas al sistema innecesarias resulta fundamental. Verificamos si utilidades cotidianas se resuelven como funciones internas ejecutando dash -c "type echo type pwd type cd".
Como se ilustra en la consola, órdenes como echo, type, pwd y cd son componentes nativos (built-in) del propio binario, lo que ahorra la sobrecarga de generar subprocesos individuales en el kernel.

A continuación, evaluamos el mecanismo de asignación y expansión de parámetros en memoria mediante la instrucción dash -c "test_var='Linux Dash Practice'; echo \$test_var".
El valor alfanumérico asignado a test_var es procesado y transferido al flujo de salida con total fidelidad sintáctica.

Para confirmar inequívocamente qué proceso está gestionando el hilo actual de ejecución, consultamos el parámetro reservado $0 mediante dash -c "echo \$0".
La respuesta del terminal imprime explícitamente dash, confirmando que el entorno activo responde a las directivas de este intérprete minimalista.

Construcción y ejecución de scripts compatibles con la norma POSIX
Para organizar las pruebas prácticas, creamos un directorio de trabajo dedicado y nos posicionamos dentro de él mediante mkdir -p ~/dash_practice && cd ~/dash_practice.

Procedemos a generar el archivo posix_test.sh, implementando una estructura de control iterativa while y aritmética estándar $(( ... )) compatible con cualquier entorno POSIX.
Definimos la directiva inicial #!/bin/dash en el shebang para asegurar que el kernel delegue el procesamiento directamente a este ejecutable.

Antes de invocar el script recién creado, concedemos permisos de ejecución en el sistema de archivos con chmod +x posix_test.sh.

Lanzamos el programa invocando ./posix_test.sh desde la consola.
Se aprecian tres iteraciones consecutivas donde el contador aritmético se incrementa y se imprime en pantalla conforme a la lógica establecida.

Comparativa de rendimiento: dash frente a bash
Para contrastar el comportamiento de ambos intérpretes ante cargas de trabajo repetitivas, regresamos a la carpeta de pruebas ejecutando cd ~/dash_practice.

Diseñamos a continuación bench.sh, una prueba de esfuerzo consistente en un bucle que incrementa una variable interna hasta alcanzar las 50.000 iteraciones consecutivas.

En primer lugar, medimos el tiempo de cómputo y consumo de recursos bajo el entorno estándar de GNU bash mediante time bash bench.sh.
Una vez finalizado el ciclo numérico, la herramienta time reporta los valores totales de tiempo real, de usuario y del sistema consumidos durante el procesamiento.

Posteriormente, sometemos exactamente el mismo script a evaluación directa con time dash bench.sh.
Al carecer de funciones complejas orientadas a la interactividad humana y contar con una base de código notablemente más compacta, dash completa el bucle en una fracción del tiempo requerido por bash, demostrando una eficiencia operativa sobresaliente.

Hemos explorado los fundamentos, la sintaxis esencial y las ventajas comparativas de dash en sistemas Ubuntu. Adoptar este intérprete para tareas de arranque, servicios desatendidos y automatizaciones críticas en Linux garantiza una portabilidad POSIX total al tiempo que optimiza de forma significativa el rendimiento del servidor.