Quels shells ne supportent pas l'expansion de la parenthèse dollar et les backticks de la request?

La recommandation moderne est d'utiliser:

$(...) 

au lieu de l'ancien:

 `...` 

principalement pour la lisibilité et pour éviter la nécessité de s'échapper lors de la nidification.

Quels shells ne supportent pas la forme $(...) , et sont-ils encore utilisés aujourd'hui?

Le shell Bourne d'origine, csh ou tcsh ne supporte pas tous $() et nécessite `` pour la substitution de command.

Le shell Bourne n'est plus utilisé comme shell par défaut (/ bin / sh) sur de nombreux systèmes d'exploitation basés sur UNIX. Cependant, ces coquilles sont toujours fournies par les vendeurs du operating system car ils sont encore utilisés pour des raisons historiques.

AIX et HP-UX possèdent / bin / sh en tant que shell compatible POSIX. Le shell Bourne est toujours disponible sous AIX sous le nom «bsh» (mais déconseillé en 1995 avec AIX 4.1) et HP-UX 11.11 «/ usr / old / bin / sh» (Bourne a été supprimé de 11.23). Je ne sais pas quand l'interrupteur a été fait, mais c'était il y a plusieurs années.

Solaris 10 et versions antérieures /bin/sh ne prennent pas en charge $() .

Il est encore utilisé aujourd'hui car Solaris 10 est encore utilisé, Sun ne souhaitant pas le replace par une version conforme standard (jusqu'à Solaris 10 inclus) et parce que la plupart des gens considèrent /bin/sh comme shell par défaut et don Je ne sais pas comment exécuter de manière portable un script avec un shell conforme POSIX .

La motivation de Sun pour ne pas changer /bin/sh était d'éviter de briser les scripts shell existants qui reposent sur le comportement non conforme.