Non mi piace ridigitare il pesce ogni volta che avvio terminale. Voglio accendere fish
di 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 fish
di 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.
chsh
non è 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_VERSION
per confermare che si sta eseguendo la versione prevista di bash. bash --version
non ti fornisce informazioni corrette.
Preferences
di 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 shell
impostazioni 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
-s
pensiero). 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/shells
file.
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/shells
file
Poi ho corso chsh -s /usr/local/bin/fish
Infine, ho digitato Command+ ,e aggiunto /usr/local/bin/fish
il 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 chsh
programma ti permetterà di cambiare la shell predefinita. Vorrà il percorso completo dell'eseguibile, quindi se la tua shell è fish
allora 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/bash
percorso 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