Quali shell non supportano l'espansione tra parentesi in dollari e richiedono backtick?


8

La moderna raccomandazione è di usare:

$(...)

invece del più vecchio:

`...`

principalmente per la leggibilità e per evitare la necessità di scappare durante la nidificazione.

Quali shell non supportano il $(...)modulo e alcune sono ancora in uso oggi?



Dice "L'unico motivo per usare i backtick è la compatibilità con una vera shell Bourne (come Heirloom)."
joeytwiddle,

1
Un punto importante è che tutti i sistemi di tipo Unix post-90 mantenuti avranno un comando chiamato shche nel giusto ambiente supporterà $(...).
Stéphane Chazelas,

Risposte:


8

La shell Bourne originale, csh o tcsh non supportano $()e richiedono la `` sostituzione dei comandi.

La shell Bourne non viene più utilizzata come shell predefinita (/ bin / sh) su molti sistemi operativi basati su UNIX. Tuttavia, queste shell sono ancora fornite dai fornitori del sistema operativo in quanto vengono ancora utilizzate per motivi storici.

Sia AIX che HP-UX hanno / bin / sh come shell conforme a POSIX. La shell Bourne è ancora disponibile su AIX come 'bsh' (ma obsoleta nel 1995 con AIX 4.1) e HP-UX 11.11 '/ usr / old / bin / sh' (Bourne è stata rimossa da 11.23). Non sono sicuro di quando sia stato effettuato il passaggio, ma è stato molti anni fa.


5

Solaris 10 e precedenti /bin/shnon supportano $().

È ancora in uso oggi perché Solaris 10 è ancora in uso, Sun non ha voluto sostituirlo con una versione conforme standard (fino a Solaris 10 incluso) e poiché la maggior parte delle persone considera /bin/shla shell predefinita e non sa come per eseguire in modo portabile uno script con una shell conforme POSIX .

La motivazione di Sun per non cambiare /bin/shera quella di evitare di rompere gli script di shell esistenti che si basano sul comportamento non conforme.


2
@cuonglm, sì, l'ho appena testato e posso confermarlo. Avrei pensato che Hurd sarebbe stato rilasciato piuttosto che Sun / Oracle cambia la sua politica su /bin/sh...
maxschlepzig
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.