Come impostare la mia shell predefinita su Mac?
Domanda
Non mi piace ridigitare pesce ogni volta che avvio terminale. Per impostazione predefinita, desidero fish
. Come posso impostare fish shell come shell predefinita su un Mac?
Soluzione
Questi sono applicabili a MacOS Sierra 10.12.5 (16F73) e probabilmente ad altre versioni recenti e imminenti di MacOS.
chsh
non è sufficiente per cambiare la shell predefinita. Assicurati di premere Comando + , mentre il tuo terminale è aperto e cambia l'opzione "Apri shell con" in "Shell di accesso predefinita".-
In caso di bash, assicurati di eseguire
echo $ BASH_VERSION
per confermare che stai eseguendo la versione prevista di bash.bash --version
non fornisce informazioni corrette.
Altri suggerimenti
1. sudo nano / etc / shells
2. aggiungi / usr / local / bin / fish al tuo elenco di shell
3. chsh -s / usr / local / bin / fish
Puoi utilizzare 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 manpage, e da Lorin, se la shell non è nota al sistema operativo, è necessario aggiungerla alla sua lista conosciuta: / etc / shells
.
Dal terminale:
-
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 & # 8594; ctrl-clic su Utente corrente & # 8594; Opzioni avanzate ...
-
Cambia la shell di accesso in
/usr/local/bin/fish
-
Premi OK, esci e accedi di nuovo
Ecco un altro modo per farlo:
Supponendo che tu l'abbia installato con MacPorts, cosa che puoi fare facendo:
sudo port install fish
La tua shell si troverà in / opt / local / bin / fish
.
Devi dire a OSX che questa è una shell valida. Per fare ciò, aggiungi questo percorso alla fine del file / etc / shells
.
Una volta fatto questo, puoi cambiare la shell andando in Preferenze di Sistema - > Account. Fai clic su Blocca per consentire le modifiche. Fai clic con il pulsante destro del mouse sull'account e scegli " Opzioni avanzate ... " ;. Nella " Shell di accesso " campo, 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 il pesce al file
/ etc / shells
-
Quindi ho eseguito
chsh -s / usr / local / bin / fish
-
Alla fine, ho digitato Comando + , e ho aggiunto
/ usr / local / bin / fish
al percorso predefinito lì
Solo dopo aver fatto tutte e tre le cose i pesci hanno iniziato a spuntare come predefinito per le nuove finestre del terminale.
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)
- Apri il tuo terminale e premi comando + , (virgola). Questo aprirà una finestra delle preferenze.
- La prima scheda è "Generale".
- Trova l'impostazione 'Apri shell con' e scegli la seconda opzione che richiede il percorso completo della shell.
- Incolla il link al tuo comando fish, che generalmente è
/ usr / local / bin / fish
.
Sto usando macOS Sierra.
il programma chsh
ti permetterà di cambiare la shell predefinita. Vorrà il percorso completo dell'eseguibile, quindi se la tua shell è fish
, ti chiederà di fornire l'output fornito quando digiti quale pesce
.
Vedrai una riga che inizia con " Shell:
" ;. Se non l'hai mai modificato, molto probabilmente dice " Shell: / bin / bash
" ;. Sostituisci quel percorso / bin / bash
con il percorso della shell desiderata.
Quando sei nel terminale, apri le preferenze del terminale usando Comando + , .
Nella scheda Impostazioni, selezionare uno dei temi e scegliere la scheda shell sulla destra.
Puoi impostare il comando di avvio automatico fish
.
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
).
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 stile vim che è disponibile solo su bash > = 4 (versione corrente in 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"
Nel caso in cui tu abbia problemi con gli altri modi, hai lavorato su Mac Mojave ma in genere dovrebbe funzionare.
which fish
aggiungi il percorso di output a " Preferenze di Sistema > Utenti e amp; Gruppi > tasto destro del mouse utente, Opzioni avanzate " Incolla il risultato dal quale in " Shell di accesso: "
Questo lavoro per me su una nuova installazione di mac osx (sierra):
- Definisce l'utente corrente come proprietario delle shell
sudo chown $(whoami) /etc/shells
- Aggiungi Fish a / etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
- Imposta Fish come shell predefinita con chsh
chsh -s /usr/local/bin/fish
- Ridefinisci root come proprietario delle shell
sudo chown root /etc/shells