Ho letto molti articoli che dicono che la shell ufficiale in FreeBSD è tcsh
e in Debian il suo dash
. Tuttavia, quando eseguo echo $shell
(FreeBSD) o env
in Debian, dice che la shell è csh
nel primo caso, o bash
in Debian.
Questo è nelle nuove installazioni. Ho testato con l'account root e un normale account utente. Inoltre, quando creo un nuovo account in FreeBSD, posso scegliere tra 3 shell; sh
, csh
o tcsh
. Se non faccio scelta, csh
è l'impostazione predefinita per l'account.
Qual è la shell standard ufficiale in quei sistemi? È tcsh
o csh
in FreeBSD? È dash
o bash
in Debian?
Sono io che sbaglio qualcosa? Oppure gli articoli e i siti sono male informati?
Voglio imparare due shell:una per Debian e una per FreeBSD, ma non riesco a trovare quale dovrei imparare, dal momento che non è chiaro quale sia la shell ufficiale.
Inoltre, durante la ricerca di quale shell dovrei imparare, ho trovato questo:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
È qualcuno a cui non piace csh
o dovremmo davvero evitare csh
?
Sto usando le ultime versioni di Debian e FreeBSD.
Comincio a perdermi con tutte queste opzioni della shell, mi sembrano tutte uguali (tranne per la sintassi; voglio dire, sembrano tutte offrire le stesse possibilità). È per questo che voglio imparare quello ufficiale.
Risposta accettata:
Non è necessario utilizzare la shell predefinita per un determinato sistema. Sia Debian che FreeBSD forniscono una serie di shell differenti e la maggior parte o tutte sono disponibili su entrambe, preinstallate o facilmente installabili.
Fai attenzione ai nomi. Non è raro per /bin/csh
per essere davvero tcsh, o per /bin/sh
essere bash o ksh.
sh
, la shell Bourne, è la più antica shell Unix ancora di uso comune. bash
è probabilmente il derivato sh più usato; ksh
e zsh
sono anche diffusi.
csh
, la shell C, è stata sviluppata per BSD da Bill Joy. Ha alcune caratteristiche che rendono l'uso interattivo più conveniente rispetto a sh
(o almeno rispetto alla vecchia versione di sh
che esisteva all'epoca). tcsh
è derivato da csh
e aggiunge molte nuove funzionalità, la maggior parte delle quali finalizzate all'uso interattivo. Come hai visto leggendo csh.whynot, csh e tcsh hanno alcuni problemi quando si tratta di usarli per lo script anziché in modo interattivo.
Personalmente, ho iniziato con csh, poi sono passato a tcsh quando è diventato disponibile. Ora uso raramente csh per gli script, preferendo sh o bash (o Perl per qualsiasi cosa ragionevolmente complessa).
Correlati:l'opzione -F per ls?(Aggiornamento, qualche anno dopo:da allora ho abbandonato tcsh e ora uso bash in modo interattivo.)
Il mio consiglio sarebbe di scegliere una singola shell e impararla bene, usandola sia su FreeBSD che su Debian. Se scegli tcsh, penso che dovrai installarlo su Debian:sudo apt-get install tcsh
. Se scegli bash, non so se è preinstallato su FreeBSD; in caso contrario, dovrebbe essere altrettanto semplice installarlo.
Non è necessario utilizzare la stessa shell in modo interattivo e per gli script, ma può evitare confusione e ridurre la curva di apprendimento.
ksh è probabilmente potente quanto bash e zsh è ancora più potente (e ha molte funzionalità che non ho mai avuto il tempo di imparare).
Suggerisco bash, sia per FreeBSD che per Debian (e per qualsiasi altro sistema simile a Unix che potresti usare), sia per l'uso interattivo che per lo scripting. Ma altre scelte sono perfettamente legittime e alcune potrebbero adattarsi meglio a te.