Come impostare la mia shell predefinita su Mac?


190

Non mi piace ridigitare il pesce ogni volta che avvio terminale. Voglio accendere fishdi default. Come posso impostare fish shell come shell predefinita su un Mac?

Risposte:


31

Questi sono applicabili a MacOS Sierra 10.12.5 (16F73) e probabilmente ad altre versioni recenti e imminenti di MacOS.

  1. chshnon è sufficiente per modificare la shell predefinita. Assicurati di premere Command+ ,mentre il tuo terminale è aperto e modifica l'opzione "Apri shell con" in "Shell di accesso predefinita".

  2. In caso di bash, assicurarsi di eseguire echo $BASH_VERSIONper confermare che si sta eseguendo la versione prevista di bash. bash --versionnon ti fornisce informazioni corrette.


3
Poiché questa risposta è quella accettata, forse invece di essere presumibilmente un addendum a un'altra risposta , è possibile renderla una risposta completa per includere l'addendum.
Jason R. Coombs,

Questa è una risposta nei documenti ora.
Reergymerej,

@ JasonR.Coombs Fatto.
Tushar Vazirani,

1
Aggiornamento: Ora possiamo impostare la shell di default in Preferencesdi Terminal.app . Vedi questa risposta di Pankaj.
Basil Bourque,

Ho citato la scorciatoia da tastiera per le preferenze.
Tushar Vazirani,

242

1. sudo nano / etc / shells inserisci qui la descrizione dell'immagine

2. aggiungi / usr / local / bin / fish al tuo elenco di shell inserisci qui la descrizione dell'immagine

3. chsh -s / usr / local / bin / fish


2
E dovresti cambiare le Shell open with: Default login shellimpostazioni di Terminal.app
Tikhonov Alexander il

77

Puoi usare chsh per cambiare la shell di un utente.

Esegui il seguente codice, ad esempio, per cambiare la tua shell in Zsh

chsh -s /bin/zsh

Come descritto nella pagina di manuale, e da Lorin, se la shell non è conosciuto con il sistema operativo, si deve aggiungere alla sua lista nota: /etc/shells.


13
Ho provato e ottenuto La chsh: /usr/local/bin/fish: non-standard shell soluzione era di aggiungerlo a / etc / shells come descritto da @ lorin-hochstein risposta di seguito
lmsurprenant

dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash Cambio shell per dbright. Password per dbright: chsh: / Users / dbright / sys / bin / bash: shell non standard dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 ruota radice 179 set 23 2007 2007 / etc / shells
don bright

Hum, di recente ho provato chsh che ha funzionato come un semplice utente (senza il -spensiero). Ci riproverò presto.
Aif

73

Dal terminal:

  1. Aggiungi Fish a /etc/shells, che richiederà una password amministrativa:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Imposta Fish come shell predefinita con chsh:

    chsh -s /usr/local/bin/fish
    

Dalle preferenze di sistema:

  1. Utente e gruppi → ctrl-clic su Utente corrente → Opzioni avanzate ...

  2. Cambia la shell di accesso in /usr/local/bin/fish

    shell di accesso

  3. Premere OK, disconnettersi e riconnettersi


8
Ho dovuto apportare una leggera modifica al passaggio 1. -sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
porpora

Solo un altro modo di fare la stessa cosa di cui parla echo /usr/local/bin/fish | sudo tee -a /etc/shells
@purpletonic

20

Ecco un altro modo per farlo:

Supponendo di averlo installato con MacPorts, che può essere fatto facendo:

sudo port install fish

La tua shell si troverà dentro /opt/local/bin/fish.

Devi dire a OSX che questa è una shell valida. Per fare ciò, aggiungi questo percorso alla fine del /etc/shellsfile.

Una volta fatto, puoi cambiare la shell andando in Preferenze di Sistema -> Account. Fai clic su Blocca per consentire le modifiche. Fai clic con il tasto destro sull'account e scegli "Opzioni avanzate ...". Nel campo "Login shell", aggiungi il percorso per pescare.


Grazie! questo ha funzionato alla grande e ha reso il pesce il mio terminale predefinito ovunque. cambiarlo nel terminale come una delle altre risposte fatte terminal mi spinge ogni volta che ho chiuso una finestra e chsh non ha funzionato per me.
jasongregori,

12

L'unica cosa che ha funzionato per me è stata una combinazione di tutti questi metodi.

  1. Per prima cosa ho dovuto aggiungere pesce al /etc/shellsfile

  2. Poi ho corso chsh -s /usr/local/bin/fish

  3. Infine, ho digitato Command+ ,e aggiunto /usr/local/bin/fishil percorso predefinito lì

Solo dopo aver fatto tutte e tre le cose i pesci hanno iniziato a comparire come impostazione predefinita per le nuove finestre del terminale.



8

Terminal.app > Preferences> General> Shells open with:>/bin/fish

  1. Apri il tuo terminale e premi command+ ,(virgola). Questo aprirà una finestra delle preferenze.
  2. La prima scheda è "Generale".
  3. Trova l'impostazione "Conchiglie aperte con" e scegli la seconda opzione che richiede il percorso completo della shell.
  4. Incolla il link al tuo comando fish, che generalmente è /usr/local/bin/fish.

Guarda questo screenshot dove zshè impostato come predefinito.

schermata di immissione di <code> / bin / zsh </code> nelle preferenze Terminal.app

Sto usando macOS Sierra . Funziona anche in macOS Mojave .


2
Alla fine! Una soluzione che funziona per un utente non sudo!
Ébe Isaac,

7

Su macOS Mojave ho dovuto fare quanto segue (usando zsh come esempio):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)

Nota: è possibile utilizzare questo metodo esatto per ottenere anche l'ultima versione di bash. stackoverflow.com/a/55011144/117471 Ho trovato quasi lo stesso codice per conto mio.
Bruno Bronosky,

1
Non è necessario installare zsh. Già presente su macOS Mojave. In bundle su Mojave e predefinito in Catalina.
Basil Bourque,

5

Come ottenere l'ultima versione di bash su macOS moderno (testato su Mojave).

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

Quindi sei pronto per ottenere il completamento della scheda in stile vim che è disponibile solo su bash> = 4 (la versione attuale brewè 5.0.2

# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete

# Display a list of the matching files
bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"

4

il chshprogramma ti permetterà di cambiare la shell predefinita. Vorrà il percorso completo dell'eseguibile, quindi se la tua shell è fishallora ti chiederà di fornire l'output fornito durante la digitazione which fish.

Vedrai una riga che inizia con " Shell:". Se non l'hai mai modificato, molto probabilmente dice " Shell: /bin/bash". Sostituisci quel /bin/bashpercorso con il percorso della shell desiderata.


4

Quando sei nel terminale, apri le preferenze del terminale usando Command+ ,.

Nella scheda Impostazioni, selezionare uno dei temi e scegliere la scheda shell sulla destra.

È possibile impostare il comando di avvio automatico fish.


4

Questo lavoro per me su una nuova installazione di mac osx (sierra):

  1. Definire l'utente corrente come proprietario delle shell
sudo chown $(whoami) /etc/shells
  1. Aggiungi Fish a / etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Imposta Fish come shell predefinita con chsh
chsh -s /usr/local/bin/fish
  1. Ridefinisci la radice come proprietario delle shell
sudo chown root /etc/shells

2
heimdall:~ leeg$ dscl
Entering interactive mode... (type "help" for commands)
 > cd /Local/Default/Users/
/Local/Default/Users > read <<YOUR_USER>>
[...]
UserShell: /bin/bash
/Local/Default/Users >

basta cambiare quel valore (con il comando write in dscl).


Ottengo questo errore quando eseguo read leeg: <dscl_cmd> Errore DS: -14136 (eDSRecordNotFound)
Léo Léopold Hertz

1
Sì. Questo perché leeg è il mio nome utente, non il tuo: P

0

Nel caso in cui tu abbia problemi con gli altri modi, hai lavorato su Mac Mojave ma generalmente dovrebbe funzionare.

which fish

aggiungi il percorso di output a "Preferenze di Sistema> Utenti e gruppi> utente clic destro, Opzioni avanzate" Incolla il risultato da cui in "Shell di accesso:"


0

Per modificare la shell predefinita su Mac, eseguire quanto segue:

chsh -s <name-of-shell>

Elenco di shell che puoi scegliere sono:

  1. / Bin / bash
  2. / Bin / csh
  3. / Bin / dash
  4. / Bin / ksh
  5. / Bin / sh
  6. / Bin / tcsh
  7. / Bin / zsh

quindi se vuoi passare dalla shell / bin / zsh, il tuo comando sarà simile a:

chsh -s /bin/zsh

puoi vedere tutte le shell disponibili sul tuo sistema eseguendo:

cat /etc/shells
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.