En mi mac, bash -D no genera resultados
bash -D (y su opción larga equivalente --dump-strings ) lee comandos desde una entrada estándar o un archivo y extrae cadenas marcado como traducible , es decir, cadenas entre comillas dobles precedidas por un signo de dólar, como $"Hello, world" .
Si bash -D se ejecuta sin ninguna entrada, como lo hizo, no genera nada e inicia un nuevo shell (un special shell, vea más abajo).
Por ejemplo, para este simple script /tmp/script :
#!/bin/bash
echo $"Hello, world"
bash -D resultados:
"Hello, world"
Como puede ver, esto es equivalente a buscar líneas que coincidan con $"<text>" y eliminar el signo de dólar.
Más interesante es el resultado de la opción similar --dump-po-strings , que es, como la página de Bash man lo pone, equivalent to -D, but the output is in the GNU gettext po (portable object) file format. :
bash --dump-po-strings /tmp/script
#: /tmp/script:2
msgid "Hello, world"
msgstr ""
Este excelente artículo Cómo agregar soporte de localización a tus scripts de bash proporciona más información sobre cómo usar esta opción.
bash -D me envía a una nueva shell que parece tener menos funcionalidad que la shell original
Eso es correcto, el nuevo shell no reacciona a ningún comando. La razón de esto es que la opción -D implica -n , que dirige al shell a leer comandos pero no a ejecutarlos .
La opción -n merece una explicación: aunque es una opción aparentemente inútil a primera vista, en realidad es bastante útil. bash -n no solo lee los comandos, sino que también los valida y se queja si la sintaxis no es válida, por lo que puede ejecutar bash -n <script name> para verificar si en un script hay errores de sintaxis sin ejecutar ningún comando.
Esto significa que después de ejecutar bash -D , el shell que obtenga aceptará con gusto sus comandos, verificará la validez de sintaxis (y generará un error si es necesario) y no hará nada. Es por eso que which "no funciona".
Consulte Invoking Bash y The Set Builtin del Manual de referencia de Bash para obtener información de fondo sobre este comportamiento.