Je n'aime pas retaper du poisson à chaque démarrage du terminal. Je veux fish
par défaut. Comment définir Fish Shell comme Shell par défaut sur un Mac?
Celles-ci sont applicables à MacOS Sierra 10.12.5 (16F73) et probablement à d'autres versions récentes et à venir de MacOS.
chsh
n'est pas suffisant pour changer le shell par défaut. Assurez-vous d'appuyer sur Command+, Pendant que votre terminal est ouvert, changez l'option 'Shells open with' avec 'Shell de connexion par défaut'.
Dans le cas de bash, assurez-vous d’exécuter echo $BASH_VERSION
pour confirmer que vous exécutez la version prévue de bash. bash --version
ne vous donne pas les informations correctes.
1. Sudo nano/etc/shells
2. Ajoutez/usr/local/bin/fish à votre liste d'obus
3. chsh -s/usr/local/bin/fish
Vous pouvez utiliser chsh pour changer le shell d’un utilisateur.
Exécutez le code suivant, par exemple, pour modifier votre shell en Zsh
chsh -s /bin/zsh
Comme décrit dans la page de manuel et par Lorin, si le shell n’est pas connu du système d’exploitation, vous devez l’ajouter à sa liste connue: /etc/shells
.
Du terminal:
Ajoutez Fish à /etc/shells
, ce qui nécessitera un mot de passe administratif:
Sudo echo /usr/local/bin/fish >> /etc/shells
Faites de Fish votre Shell par défaut avec chsh
:
chsh -s /usr/local/bin/fish
Depuis les préférences système:
Utilisateur et groupes → ctrl-clic sur Utilisateur actuel → Options avancées ...
Remplacez le shell de connexion par /usr/local/bin/fish
Appuyez sur OK, déconnectez-vous et reconnectez-vous
Voici une autre façon de le faire:
En supposant que vous l’ayez installé avec MacPorts, vous pouvez le faire de la manière suivante:
Sudo port install fish
Votre shell sera situé dans /opt/local/bin/fish
.
Vous devez indiquer à OSX qu'il s'agit d'un shell valide. Pour ce faire, ajoutez ce chemin à la fin du fichier /etc/shells
.
Une fois cela fait, vous pouvez changer de shell en allant dans Préférences Système -> Comptes. Cliquez sur le verrou pour autoriser les modifications. Cliquez avec le bouton droit sur le compte et choisissez "Options avancées ...". Dans le champ "Login Shell", ajoutez le chemin d'accès au poisson.
La seule chose qui a fonctionné pour moi a été une combinaison de toutes ces méthodes.
J'ai d'abord dû ajouter du poisson au fichier /etc/shells
Puis j'ai couru chsh -s /usr/local/bin/fish
Enfin, j'ai tapé Command+, et ajouté /usr/local/bin/fish
au chemin par défaut
Ce n’est qu’après avoir fait les trois choses que le poisson est devenu la valeur par défaut pour les nouvelles fenêtres du terminal.
/usr/local/bin/fish
.J'utilise macOS Sierra.
Sur macOS Mojave, je devais faire ce qui suit (en utilisant zsh comme exemple):
brew install zsh
Sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
Dans le terminal, ouvrez les préférences du terminal en utilisant Command+,.
Dans l'onglet Paramètre, sélectionnez l'un des thèmes et choisissez l'onglet Shell à droite.
Vous pouvez définir la commande de démarrage automatique fish
.
le programme chsh
vous permettra de changer votre shell par défaut. Il voudra connaître le chemin complet de l'exécutable. Par conséquent, si votre shell est fish
, il vous demandera alors de fournir le résultat fourni lorsque vous tapez which fish
.
Vous verrez une ligne commençant par "Shell:
". Si vous ne l'avez jamais édité, il est très probablement écrit "Shell: /bin/bash
". Remplacez ce chemin /bin/bash
par le chemin du shell souhaité.
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 >
changez simplement cette valeur (avec la commande write dans dscl
).
Comment obtenir la dernière version de bash sur macOS moderne (testé sur Mojave).
brew install bash
which bash | Sudo tee -a /etc/shells
chsh -s $(which bash)
Alors vous êtes prêt à obtenir l'achèvement de l'onglet de style vim qui n'est disponible que sur bash> = 4 (la version actuelle dans brew
est 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"
Si vous rencontrez des problèmes avec les autres méthodes, travaillez sur mac Mojave mais devrait en général fonctionner.
which fish
ajoutez le chemin de sortie dans "Préférences Système> Utilisateurs et groupes> utilisateur en cliquant à droite, Options avancées", puis collez le résultat à partir de "Login Shell:"
Ce travail pour moi sur la nouvelle installation de 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