Comment définir le poisson comme coquille par défaut?

110

Existe-t-il un moyen de définir Fish comme la coquille par défaut du remix d'ubuntu netbook? Je mets dans mon .bashrc pour lancer du poisson, ce qui fonctionne bien, mais Ubuntu le reconnaît comme un poisson courant à l'intérieur de Bash, ce qui signifie que lorsque j'essaie de fermer la coquille, il me prévient qu'une tâche est toujours en cours d'exécution.

Elle ne s'affiche pas comme une nouvelle application, je ne peux donc pas la verrouiller comme une application normale.

Xodarap
la source

Réponses:

151

Vous pouvez définir le poisson comme coquille par défaut en lançant

chsh -s `which fish`

Pour le faire pour un autre utilisateur, ajoutez simplement le nom d'utilisateur à la fin de la commande et utilisez-le sudo.

Puis déconnectez-vous et revenez dans.

(Pour le redéfinir bash, vous devez bien sûr utiliser la syntaxe Fish, comme ceci chsh -s (which bash))

ajmitch
la source
3
Cela ne semble pas fonctionner pour moi. Cela ne donne pas d'erreur, mais cela ne semble pas fonctionner, même si je viens d'ouvrir un nouvel onglet. Des pensées?
Xodarap
16
Vous devrez peut-être vous déconnecter et vous reconnecter - je viens de l'essayer sur une machine virtuelle propre et cela a fonctionné.
ajmitch
1
Comment le repères-tu?
knutole
7
N'exécutez pas cette commande accidentellement avec sudoou vous changerez le shell root à la place.
Stephen Niedzielski
2
Ou chsh -s (which fish)de l'intérieur du poisson.
Wtower
30
usermod -s /usr/bin/fish username

Doit être exécuté en tant que root cependant.

Cela modifiera le shell de manière permanente pour l'utilisateur spécifié.

sweetfa
la source
1
Je sais que ce n'est pas Ubuntu, mais je voulais faire un commentaire: j'étais sur CentOS et j'obtenais une Authentication Failederreur en essayant de changer le shell avec un utilisateur non root et après une recherche approfondie pour essayer de le comprendre, c'était la seule chose à faire. ça a marché. Merci!
CWSpear
Oui, cela fonctionnera sur la plupart des saveurs Unix qui ont usermod et du poisson pour une coquille, ou changer la coquille à n'importe quelle saveur que vous souhaitez
sweetfa
Je l'ai fait et maintenant le terminal ne démarre plus. J'obtiens "Une erreur s'est produite lors de la création du processus enfant pour ce terminal", "Echec de l'exécution du processus enfant" / usr / bin / fish "(erreur d'entrée / sortie)". Comment puis-je annuler cela?
ptkato
Émettez la même commande que root mais utilisez bash au lieu de poisson comme coquille.
sweetfa
21

Je viens d'ajouter la ligne fishà la fin de mon .bashrc.

Kyle D
la source
1
C'est la solution la plus simple et la meilleure, IMO;)
Ben Marten
9
Désolé, mais ce n'est pas efficace. :) Il va charger votre coquille de poisson mais au-dessus de votre bash en cours d'exécution.
M. Junaid Salaat
1
Pourquoi bash doit-il être efficace? @ M.JunaidSalaat
codenamejames
Au premier coup d'œil, cela ressemble à un bidouillage sale, mais après un certain temps d'utilisation de mon ordinateur avec le poisson défini comme shell par défaut avec chsh, je suis revenu à cette solution. Certains programmes supposent que vous utilisez bash et que vous allez planter à cause de l’utilisation de la syntaxe bash sur les poissons. Jusqu'ici, j'ai rencontré de tels problèmes dans i3wm et matlab.
Naheel
@codenamejames: Ce n'est pas que bash doit être efficace, ni que ces quelques millisecondes comptent, mais c'est un cas où il n'y a rien à perdre, alors pourquoi ne pas le faire correctement? Surtout ici où nous donnons des conseils à d'autres personnes. Nous devrions savoir mieux
swalog
13

Je suis d'accord avec le chshest la bonne réponse. Pourtant:

Si vous courez chshet obtenez une erreur

/usr/local/bin/fish: non-standard shell

ajoutez simplement l'emplacement binaire du poisson à /etc/shells.

Trouvé ici .

Jackbravo
la source
Ceci est nécessaire sur macOS Mojave.
Dodekeract
2

Dans /etc/shells, ajoutez /usr/local/bin/fish:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish

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

Dorian
la source