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?
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:
Questi sono applicabili a MacOS Sierra 10.12.5 (16F73) e probabilmente ad altre versioni recenti e imminenti di MacOS.
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".
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.
Preferencesdi Terminal.app . Vedi questa risposta di Pankaj.
1. sudo nano / etc / shells

2. aggiungi / usr / local / bin / fish al tuo elenco di shell

3. chsh -s / usr / local / bin / fish
Shell open with: Default login shellimpostazioni di Terminal.app
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.
chsh: /usr/local/bin/fish: non-standard shell soluzione era di aggiungerlo a / etc / shells come descritto da @ lorin-hochstein risposta di seguito
-spensiero). Ci riproverò presto.
Dal terminal:
Aggiungi Fish a /etc/shells, che richiederà una password amministrativa:
sudo echo /usr/local/bin/fish >> /etc/shells
Imposta Fish come shell predefinita con chsh:
chsh -s /usr/local/bin/fish
Dalle preferenze di sistema:
Utente e gruppi → ctrl-clic su Utente corrente → Opzioni avanzate ...
Cambia la shell di accesso in /usr/local/bin/fish

Premere OK, disconnettersi e riconnettersi
sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
echo /usr/local/bin/fish | sudo tee -a /etc/shells
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.
L'unica cosa che ha funzionato per me è stata una combinazione di tutti questi metodi.
Per prima cosa ho dovuto aggiungere pesce al /etc/shellsfile
Poi ho corso chsh -s /usr/local/bin/fish
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.
Preferences> General> Shells open with:>/bin/fish/usr/local/bin/fish.Guarda questo screenshot dove zshè impostato come predefinito.
Sto usando macOS Sierra . Funziona anche in macOS Mojave .
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)
zsh. Già presente su macOS Mojave. In bundle su Mojave e predefinito in Catalina.
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"
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.
Questo lavoro per me su una nuova installazione di mac osx (sierra):
sudo chown $(whoami) /etc/shells
sudo echo /usr/local/bin/fish >> /etc/shells
chsh -s /usr/local/bin/fish
sudo chown root /etc/shells
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).
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:"
Per modificare la shell predefinita su Mac, eseguire quanto segue:
chsh -s <name-of-shell>
Elenco di shell che puoi scegliere sono:
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