Wie lege ich Fisch als Standard-Shell fest?

110

Gibt es eine Möglichkeit, Fisch als Standard-Shell in Ubuntu Netbook Remix festzulegen? Ich habe meine .bashrc-Datei eingegeben, um Fisch auszuführen. Dies funktioniert einwandfrei. Ubuntu erkennt jedoch, dass Fisch in bash ausgeführt wird. Wenn ich also versuche, die Shell zu schließen, werde ich gewarnt, dass noch ein Task ausgeführt wird.

Es wird nicht als neue Anwendung angezeigt, daher kann ich es nicht wie eine normale App an meine Leiste anheften.

Xodarap
quelle
2
Aus der offiziellen FAQ: Wie mache ich Fisch zu meiner Standardschale?
Dennis

Antworten:

151

Sie können fish als Standard-Shell festlegen, indem Sie ausführen

chsh -s `which fish`

Um dies für einen anderen Benutzer zu tun, fügen Sie einfach den Benutzernamen am Ende des Befehls hinzu und verwenden Sie sudo.

Dann melden Sie sich ab und wieder an.

(Um es zurückzusetzen, bashmüssen Sie natürlich die Fish-Syntax verwenden, so chsh -s (which bash))

Ajmitch
quelle
3
Das scheint bei mir nicht zu funktionieren. Es gibt keinen Fehler, aber es scheint einfach nicht zu funktionieren, auch wenn ich nur einen neuen Tab öffne. Irgendwelche Gedanken?
Xodarap
16
Möglicherweise müssen Sie sich abmelden und wieder anmelden - ich habe es gerade auf einer sauberen virtuellen Maschine ausprobiert und es hat funktioniert.
Ajmitch
1
Wie setzt du es zurück?
Knutole
7
Führen Sie diesen Befehl nicht versehentlich mit sudoaus, sondern ändern Sie stattdessen die Root-Shell.
Stephen Niedzielski
2
Oder chsh -s (which fish)aus dem Inneren von Fischen.
Wtower
30
usermod -s /usr/bin/fish username

Muss allerdings als root ausgeführt werden.

Dadurch wird die Shell für den angegebenen Benutzer dauerhaft geändert.

sweetfa
quelle
1
Ich weiß, dass es sich nicht um Ubuntu handelt, aber ich wollte Folgendes kommentieren: Ich war unter CentOS und beim Authentication FailedVersuch, die Shell bei einem Benutzer ohne Rootberechtigung zu ändern , trat ein Fehler auf das hat funktioniert. Vielen Dank!
CWSpear
Ja, es wird für die meisten Unix-Aromen funktionieren, die usermod haben und nach einer Muschel fischen, oder die Muschel auf das
gewünschte
Ich habe das gemacht und jetzt startet das Terminal nicht mehr. Ich erhalte die Meldung "Beim Erstellen des untergeordneten Prozesses für dieses Terminal ist ein Fehler aufgetreten", "Fehler beim Ausführen des untergeordneten Prozesses" / usr / bin / fish "(Eingabe- / Ausgabefehler)". Wie kann ich das rückgängig machen?
Ptkato
Geben Sie den gleichen Befehl wie root ein, verwenden Sie jedoch bash anstelle von fish als Shell.
Sweetfa
21

Ich habe die Zeile gerade fishan das Ende von my angehängt .bashrc.

Kyle D
quelle
1
Das ist die einfachste und beste Lösung, IMO;)
Ben Marten
9
Sorry, aber es ist nicht effizient. :) Es wird deine Fischschale beladen, aber oben auf deinem Bash-Lauf.
M. Junaid Salaat
1
Warum muss bash effizient sein? @ M.JunaidSalaat
Codenamejames
Auf den ersten Blick scheint dies ein schmutziger Hack zu sein, aber nach einer Weile, in der ich meinen PC mit Fisch als Standard-Shell mit chsh verwendet habe, bin ich zu dieser Lösung zurückgekehrt. Einige Programme gehen davon aus, dass Sie Bash verwenden, und stürzen ab, weil Bash-Syntax für Fische verwendet wird. Bisher hatte ich solche Probleme mit i3wm und matlab.
Naheel
@codenamejames: Es ist nicht so, dass Bash effizient sein muss oder dass diese wenigen Millisekunden wichtig sind, aber es geht um nichts zu verlieren. Warum also nicht richtig? Vor allem hier, wo wir anderen Menschen Ratschläge geben. Wir sollten es besser wissen
Swalog
13

Ich bin damit einverstanden, chshist die richtige Antwort. Jedoch:

Wenn du rennst chshund Fehler bekommst

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

fügen Sie einfach den binären Standort des Fisches hinzu /etc/shells.

Gefunden hier .

jackbravo
quelle
Dies ist unter macOS Mojave erforderlich.
Dodekeract
2

In /etc/shells, fügen /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

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

Dorian
quelle