…I'd already resolved the issue using Disk Utility to repair permissions…
Se le autorizzazioni di riparazione risolvono il problema, la causa è (quasi certamente) che le autorizzazioni di /etc/shells
non erano corrette, impedendo a Terminal di leggerlo.
/etc/shells
contiene un elenco di programmi shell validi e Terminal controlla per vedere se la shell per il tuo account utente è elencata. In caso contrario, produce il messaggio "shell illegale". Se non riesce a leggere il file /etc/shells
a causa di problemi di autorizzazione, produce anche questo messaggio.
Più raramente, alcune persone hanno riscontrato questo problema quando il file /etc/shells
è stato in qualche modo modificato in modo che sia vuoto, nel qual caso sarà necessario ripristinarne il contenuto copiandolo da un buon sistema o con un Time Ripristino macchina, ecc.
Per rispondere alla tua domanda originale:
Se Terminal si lamenta di una "shell illegale" significa che la shell per il tuo account utente non è stata trovata in /etc/shells
.
Puoi vedere quali shell sono considerate valide con cat /etc/shells
.
Puoi verificare quale shell il tuo account utente è impostato per utilizzare con echo $SHELL
, o leggendo le informazioni dell'utente con dscl . -read "/Users/$LOGNAME" UserShell
. Oppure puoi utilizzare Preferenze di sistema :
- Apri Preferenze di sistema e vai a Utenti e amp; Gruppi .
- Fai clic sul lucchetto e inserisci la tua password per poter leggere / impostare le impostazioni dell'utente.
- Fai clic con il pulsante di controllo (o clic con il pulsante destro) sul tuo utente per ottenere un menu contestuale e seleziona Opzioni avanzate ... .
Il foglio Opzioni avanzate mostra informazioni dettagliate sull'account utente, incluso il nome del percorso della shell. Puoi anche usarlo per modificare il nome della shell per riattivare gli accessi se è stato impostato su un valore non elencato in /etc/shells
.