¿Qué proyectiles no admiten la expansión del paréntesis en dólares y exigen retrocesos?

8

La recomendación moderna es usar:

$(...)

en lugar de los mayores:

`...`

principalmente para facilitar la lectura y evitar la necesidad de escapar al anidar.

¿Qué shells no son compatibles con el $(...)formulario? ¿Alguno de ellos sigue en uso hoy en día?

joeytwiddle
fuente
1
Leer a través ¿Se cmdhan desaprobado los backticks (es decir ) en * shells? y encontrarás la respuesta.
John1024
Dice "La única razón para usar backticks es la compatibilidad con un shell Bourne real (como Heirloom)".
joeytwiddle
1
Un punto importante es que todos los sistemas similares a Unix mantenidos después de los 90 tendrán un comando llamado shque en el entorno adecuado admitirá $(...).
Stéphane Chazelas

Respuestas:

8

El shell Bourne original, csh o tcsh no son compatibles $()y requieren la `` sustitución de comandos.

El shell Bourne ya no se usa como el shell predeterminado (/ bin / sh) en muchos sistemas operativos basados ​​en UNIX. Sin embargo, los proveedores de sistemas operativos todavía proporcionan estos shells, ya que todavía se usan por razones históricas.

Tanto AIX como HP-UX tienen / bin / sh como un shell compatible con POSIX. Bourne Shell todavía está disponible en AIX como 'bsh' (pero desaprobado en 1995 con AIX 4.1) y HP-UX 11.11 '/ usr / old / bin / sh' (Bourne se eliminó de 11.23). No estoy seguro de cuándo se realizó el cambio, pero fue hace muchos años.

Corazón oscuro
fuente
5

Solaris 10 y versiones anteriores /bin/shno son compatibles $().

Todavía está en uso hoy en día porque Solaris 10 todavía está en uso, Sun no quería reemplazarlo con una versión conforme estándar (hasta e incluyendo Solaris 10), y porque la mayoría de las personas consideran /bin/shel shell predeterminado y no saben cómo para ejecutar de forma portátil un script con un shell POSIX conforme .

La motivación de Sun para no cambiar /bin/shera evitar romper los scripts de shell existentes que dependen del comportamiento no conforme.

maxschlepzig
fuente
2
@cuonglm, sí, acabo de probarlo y puedo confirmarlo. Hubiera pensado que se lanzaría Hurd antes que Sun / Oracle cambie su política el /bin/sh...
maxschlepzig