Comment définir mon shell par défaut sur Mac?

194

Je n'aime pas retaper le poisson chaque fois que je démarre le terminal. Je veux fishpar défaut. Comment puis-je définir la coquille de poisson comme coquille par défaut sur un Mac?

Léo Léopold Hertz 준영
la source

Réponses:

32

Ceux-ci sont applicables à MacOS Sierra 10.12.5 (16F73) et probablement à certaines autres versions récentes et à venir de MacOS.

  1. chshne suffit pas pour changer le shell par défaut. Assurez-vous d'appuyer sur Command+ ,pendant que votre terminal est ouvert et de changer l'option «Shells open with» en «Default login shell».

  2. En cas de bash, assurez-vous que vous exécutez echo $BASH_VERSIONpour confirmer que vous exécutez la version prévue de bash. bash --versionne vous donne pas des informations correctes.

Tushar Vazirani
la source
3
Comme cette réponse est acceptée, peut-être qu'au lieu d'être vraisemblablement un addendum à une autre réponse , vous pourriez en faire une réponse complète en incluant l'addendum.
Jason R. Coombs
Ceci est répondu dans les documents maintenant.
reergymerej
@ JasonR.Coombs Terminé.
Tushar Vazirani
1
Mise à jour: Nous pouvons maintenant définir shell par défaut dans Preferencesde Terminal.app . Voir cette réponse de Pankaj.
Basil Bourque
J'ai mentionné le raccourci clavier pour les préférences.
Tushar Vazirani
249

1. sudo nano / etc / shells entrez la description de l'image ici

2. ajoutez / usr / local / bin / fish à votre liste de coquillages entrez la description de l'image ici

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

user391339
la source
2
Et vous devriez changer Shell open with: Default login shelldans les paramètres de Terminal.app
Tikhonov Alexander
78

Vous pouvez utiliser chsh pour changer le shell d'un utilisateur.

Exécutez le code suivant, par exemple, pour changer votre shell en Zsh

chsh -s /bin/zsh

Comme cela est décrit dans la page, et par Lorin, si la coquille est pas connue par le système d' exploitation, vous devez l'ajouter à sa liste connue: /etc/shells.

Aif
la source
13
Essayé et obtenu La chsh: /usr/local/bin/fish: non-standard shell solution consistait à l'ajouter à / etc / shells comme décrit par @ lorin-hochstein réponse ci
lmsurprenant
dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash Changement de shell pour dbright. Mot de passe pour dbright: chsh: / Users / dbright / sys / bin / bash: shell non standard dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 root wheel 179 23 septembre 2007 / etc / shells
don bright
Hum, j'ai récemment essayé chsh qui fonctionnait comme un simple utilisateur (sans -scependant). Je réessaierai bientôt.
Aif du
73

Depuis le terminal:

  1. Ajoutez Fish à /etc/shells, ce qui nécessitera un mot de passe administratif:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Faites de Fish votre coquille par défaut avec chsh:

    chsh -s /usr/local/bin/fish
    

À partir des préférences système:

  1. Utilisateur et groupes → ctrl-clic sur Utilisateur actuel → Options avancées ...

  2. Remplacez le shell de connexion par /usr/local/bin/fish

    shell de connexion

  3. Appuyez sur OK, déconnectez-vous et reconnectez-vous

Paolo Moretti
la source
8
J'ai dû faire une légère modification à l'étape 1. -sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
purpletonic
Juste une autre façon de faire la même chose @purpletonic mentionnéeecho /usr/local/bin/fish | sudo tee -a /etc/shells
mroach
20

Voici une autre façon de le faire:

En supposant que vous l'avez installé avec MacPorts, ce qui peut être fait en faisant:

sudo port install fish

Votre shell sera situé dans /opt/local/bin/fish.

Vous devez dire à OSX qu'il s'agit d'un shell valide. Pour ce faire, ajoutez ce chemin à la fin du /etc/shellsfichier.

Une fois que vous avez fait cela, vous pouvez changer le shell en allant dans Préférences Système -> Comptes. Cliquez sur le verrou pour autoriser les modifications. Faites un clic droit sur le compte et choisissez "Options avancées ...". Dans le champ "Login shell", ajoutez le chemin d'accès aux poissons.

Lorin Hochstein
la source
Merci! cela fonctionnait très bien et faisait du poisson mon terminal par défaut partout. le simple fait de le changer dans le terminal comme l'une des autres réponses a fait que le terminal me demandait à chaque fois que je fermais une fenêtre et que chsh ne fonctionnait tout simplement pas pour moi.
jasongregori
12

La seule chose qui a fonctionné pour moi était une combinaison de toutes ces méthodes.

  1. J'ai d'abord dû ajouter du poisson au /etc/shellsfichier

  2. Puis j'ai couru chsh -s /usr/local/bin/fish

  3. Enfin, j'ai tapé Command+ ,et ajouté /usr/local/bin/fishau chemin par défaut là-bas

Ce n'est qu'après avoir fait les trois choses que le poisson a commencé à apparaître par défaut pour les nouvelles fenêtres de terminal.

pittoresque
la source
9

Mac OS X: Comment changer le shell du terminal

Gombo
la source
2
Je vous conseillerais de préférer cette approche et de ne pas changer votre shell OSX par défaut. J'ai eu des "installations infinies" sur iWorks - par exemple - à cause de scripts d'installation qui supposent que vous avez un shell compatible SH (pas le cas pour ZSH dans mon cas).
Cyber ​​Oliveira
9

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

  1. Ouvrez votre terminal et appuyez sur command+ ,(virgule). Cela ouvrira une fenêtre de préférences.
  2. Le premier onglet est «Général».
  3. Trouvez le paramètre «Shells open with» et choisissez la 2ème option qui nécessite un chemin complet vers le shell.
  4. Collez le lien vers votre commande fish, qui est généralement /usr/local/bin/fish.

Voir cette capture d'écran où zshest défini par défaut.

capture d'écran de la saisie de <code> / bin / zsh </code> dans les préférences de Terminal.app

J'utilise macOS Sierra . Fonctionne également sous macOS Mojave .

Pankaj
la source
2
Enfin! Une solution qui fonctionne pour un utilisateur non sudo!
Ébe Isaac
7

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)
MagicDude4Eva
la source
Remarque: vous pouvez également utiliser cette méthode exacte pour obtenir la dernière version de bash. stackoverflow.com/a/55011144/117471 J'ai trouvé presque exactement le même code par moi-même.
Bruno Bronosky
1
Pas besoin d'installer zsh. Déjà présent sur macOS Mojave. Livré sur Mojave et par défaut dans Catalina.
Basil Bourque
5

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)

Ensuite, vous êtes prêt à obtenir l'achèvement des onglets de style vim qui n'est disponible que sur bash> = 4 (la version actuelle brewest 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"
Bruno Bronosky
la source
4

le chshprogramme vous permettra de changer votre shell par défaut. Il voudra le chemin complet de l'exécutable, donc si votre shell est fishalors il voudra que vous fournissiez la sortie donnée lorsque vous tapez which fish.

Vous verrez une ligne commençant par " Shell:". Si vous ne l'avez jamais édité, il est fort probable qu'il indique " Shell: /bin/bash". Remplacez ce /bin/bashchemin par le chemin vers votre shell souhaité.

rejj
la source
4

Une fois dans le terminal, ouvrez les préférences du terminal en utilisant Command+ ,.

Dans l'onglet Paramètres, sélectionnez l'un des thèmes et choisissez l'onglet Shell sur la droite.

Vous pouvez définir la commande de démarrage automatique fish.

sainteté
la source
4

Ce travail pour moi sur une nouvelle installation de mac osx (sierra):

  1. Définir l'utilisateur actuel comme propriétaire des shells
sudo chown $(whoami) /etc/shells
  1. Ajouter du poisson à / etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Faites de Fish votre coquille par défaut avec chsh
chsh -s /usr/local/bin/fish
  1. Redéfinir la racine en tant que propriétaire des coquilles
sudo chown root /etc/shells
ZecKa
la source
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 >

changez simplement cette valeur (avec la commande write in dscl).

Ordiel
la source
J'obtiens cette erreur lorsque je lance read leeg: <dscl_cmd> Erreur DS: -14136 (eDSRecordNotFound)
Léo Léopold Hertz 준영
1
Oui. C'est parce que leeg est mon nom d'utilisateur, pas le vôtre: P
0

Au cas où vous rencontriez des problèmes avec les autres méthodes, a travaillé sur mac Mojave mais devrait généralement fonctionner.

which fish

ajoutez le chemin de sortie à "Préférences système> Utilisateurs et groupes> clic droit utilisateur, Options avancées" Collez le résultat à partir duquel dans "Shell de connexion:"

SLuck
la source
0

Pour changer votre shell par défaut sur mac, exécutez ce qui suit:

chsh -s <name-of-shell>

La liste des coques parmi lesquelles vous pouvez choisir est:

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

donc si vous voulez passer du shell / bin / zsh, votre commande ressemblera à:

chsh -s /bin/zsh

vous pouvez voir tous les shells disponibles sur votre système en exécutant:

cat /etc/shells
Chavez Harris
la source