Come posso risolvere Terminal.app quando la mia shell è stata impostata su un valore non valido?

1

Oggi stavo cercando di disinstallare Macports quando ho notato un errore durante l'uso di sudo. Ho ucciso Terminal e ho provato a riavviarlo, ma il messaggio di errore "Non sei autorizzato a eseguire questa applicazione" e "L'amministratore ha impostato la tua shell su un valore non valido". Come posso risolvere questo problema?

    
posta Jonathan Thomson 31.03.2012 - 23:10
fonte

5 risposte

1

Se ricevi strani messaggi di errore nelle finestre del terminale quando si aprono per la prima volta, probabilmente questo indica un problema con le preferenze del terminale. Prova a rimuovere (o a rinominare) il file delle preferenze di Terminale ( ~/Library/Preferences/com.apple.Terminal.plist ) e quindi a riavviare l'applicazione Terminale. (Origine)

Se hai ancora un problema, guarda cosa hai nei file di punti della tua shell: ~/.bash_profile , ~/.bashrc e simili. Se non riesci a capire quale sia il problema, prova a rimuovere (o semplicemente a rinominare) quei dotfile.

Un altro posto dove cercare i problemi è il file default.term in ~/Library/Application Support/Terminal . Questo è il file che memorizza le impostazioni predefinite per Terminal windows.

Se tutto ciò non riesce, utilizzare Utility Disco per riparare le autorizzazioni per Terminal. (Origine)

    
risposta data 31.03.2012 - 23:14
fonte
2

…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 :

  1. Apri Preferenze di sistema e vai a Utenti e amp; Gruppi .
  2. Fai clic sul lucchetto e inserisci la tua password per poter leggere / impostare le impostazioni dell'utente.
  3. 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 .

    
risposta data 01.04.2012 - 12:56
fonte
1

Uso zsh, mentre nelle impostazioni non so perché $ SHELL sia impostato su /usr/local/bin/zsh , quindi l'ho modificato in /bin/zsh , risolto il problema . Nel mio caso, le autorizzazioni di riparazione o altri approcci di cui sopra non hanno aiutato. Ma, grazie comunque.

    
risposta data 20.03.2013 - 12:03
fonte
0

Per me, ho ricevuto questo errore a causa di un errore di battitura. Uso homebrew e (molto stupidamente) imposta la mia shell al binario in / usr / local / Cellar piuttosto che al collegamento dinamico in / usr / local / bin. Di conseguenza, il terminale ha imbavagliato, ma sorprendentemente, iTerm non l'ha fatto. Questa discussione è stata molto utile per risolvere il mio problema.

Per prevenire il problema mio : se usi homebrew, fai SEMPRE riferimento ai binari collegati dinamicamente in / usr / local / bin, poiché questi saranno sempre aggiornati.

    
risposta data 09.12.2012 - 23:36
fonte
0

Ho ricevuto lo stesso errore dopo che ho eseguito chsh e ho fatto un refuso nel percorso per la shell di login.

Non ero in grado di aprire Terminal e non è successo niente quando ho provato a mostrare il foglio delle opzioni avanzate in Users & Pannello delle preferenze dei gruppi. Sono stato in grado di eseguire chsh -s /bin/bash in iTerm 2 però.

Puoi anche modificare la shell di accesso predefinita con dscl o modificare /var/db/dslocal/nodes/Default/users/$USER.plist direttamente.

    
risposta data 11.07.2012 - 08:05
fonte

Leggi altre domande sui tag