Wie setze ich meine Standard-Shell auf dem Mac?

190

Ich mag es nicht, Fische jedes Mal neu einzugeben, wenn ich das Terminal starte. Ich möchte fishstandardmäßig ein. Wie kann ich auf einem Mac die Fischschale als Standardschale festlegen?

Léo Léopold Hertz 준영
quelle

Antworten:

31

Diese gelten für MacOS Sierra 10.12.5 (16F73) und wahrscheinlich für einige andere aktuelle und kommende Versionen von MacOS.

  1. chshreicht nicht aus, um die Standard-Shell zu ändern. Stellen Sie sicher, dass Sie Command+ drücken, ,während Ihr Terminal geöffnet ist, und ändern Sie die Option "Shells geöffnet mit" in "Standard-Anmeldeshell".

  2. Stellen Sie im Fall von Bash sicher, dass Sie ausführen echo $BASH_VERSION, um zu bestätigen , dass Sie die beabsichtigte Version von Bash ausführen . bash --versiongibt Ihnen keine korrekten Informationen.

Tushar Vazirani
quelle
3
Da diese Antwort die akzeptierte ist , könnten Sie sie möglicherweise zu einer vollständigen Antwort machen, um den Nachtrag aufzunehmen , anstatt dass es sich vermutlich um einen Nachtrag zu einer anderen Antwort handelt.
Jason R. Coombs
Dies wird jetzt in den Dokumenten beantwortet .
Reergymerej
@ JasonR.Coombs Fertig.
Tushar Vazirani
1
Update: Wir können nun Standard - Shell in Preferencesder Terminal.app . Siehe diese Antwort von Pankaj.
Basil Bourque
Ich habe die Tastenkombination für Einstellungen erwähnt.
Tushar Vazirani
241

1. sudo nano / etc / shells Geben Sie hier die Bildbeschreibung ein

2. Fügen Sie / usr / local / bin / fish zu Ihrer Liste der Muscheln hinzu Geben Sie hier die Bildbeschreibung ein

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

user391339
quelle
2
Und Sie sollten Shell open with: Default login shellin den Einstellungen von Terminal.app
Tikhonov Alexander
77

Mit chsh können Sie die Shell eines Benutzers ändern.

Führen Sie beispielsweise den folgenden Code aus, um Ihre Shell in Zsh zu ändern

chsh -s /bin/zsh

Wie in der Manpage und von Lorin beschrieben, müssen Sie die Shell, wenn sie dem Betriebssystem nicht bekannt ist, zu seiner bekannten Liste hinzufügen : /etc/shells.

Aif
quelle
13
Versucht und bekommen chsh: /usr/local/bin/fish: non-standard shell Lösung war es, es zu / etc / shells hinzuzufügen, wie durch @ lorin-hochstein Antwort unten beschrieben
lmsurprenant
dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash Ändern der Shell für dbright. Passwort für dbright: chsh: / Users / dbright / sys / bin / bash: Nicht standardmäßige Shell dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 Root Wheel 179 23. September 2007 / etc / shells
don hell
Hum, ich habe kürzlich chsh ausprobiert, das als einfacher Benutzer funktioniert hat (ohne das -sobwohl). Ich werde es bald wieder versuchen.
Aif
73

Vom Terminal:

  1. Fügen Sie Fisch hinzu /etc/shells, für den ein Administratorkennwort erforderlich ist:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Machen Sie Fisch zu Ihrer Standardschale mit chsh:

    chsh -s /usr/local/bin/fish
    

Aus den Systemeinstellungen:

  1. Benutzer und Gruppen → Klicken Sie bei gedrückter Strg-Taste auf Aktueller Benutzer → Erweiterte Optionen ...

  2. Ändern Sie die Login-Shell in /usr/local/bin/fish

    Login-Shell

  3. Drücken Sie OK, melden Sie sich ab und wieder an

Paolo Moretti
quelle
8
Musste eine leichte Änderung an Schritt 1 sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
vornehmen.
Nur eine andere Möglichkeit, dasselbe zu tun, was @purpletonic erwähnt hatecho /usr/local/bin/fish | sudo tee -a /etc/shells
mroach
20

Hier ist eine andere Möglichkeit:

Angenommen, Sie haben es mit MacPorts installiert. Gehen Sie dazu folgendermaßen vor:

sudo port install fish

Ihre Shell befindet sich in /opt/local/bin/fish.

Sie müssen OSX mitteilen, dass dies eine gültige Shell ist. Fügen Sie dazu diesen Pfad am Ende der /etc/shellsDatei hinzu.

Sobald Sie dies getan haben, können Sie die Shell ändern, indem Sie zu Systemeinstellungen -> Konten gehen. Klicken Sie auf die Sperre, um Änderungen zuzulassen. Klicken Sie mit der rechten Maustaste auf das Konto und wählen Sie "Erweiterte Optionen ...". Fügen Sie im Feld "Login-Shell" den Pfad zum Fisch hinzu.

Lorin Hochstein
quelle
Vielen Dank! Das hat super funktioniert und Fisch überall zu meinem Standardterminal gemacht. Wenn ich es einfach im Terminal ändere, wie eine der anderen Antworten, forderte mich das Terminal jedes Mal auf, wenn ich ein Fenster schloss und chsh einfach nicht für mich funktionierte.
Jasongregori
12

Das einzige, was für mich funktioniert hat, war eine Kombination all dieser Methoden.

  1. Zuerst musste ich der /etc/shellsDatei Fisch hinzufügen

  2. Dann rannte ich chsh -s /usr/local/bin/fish

  3. Schließlich habe ich Command+ eingegeben ,und dort /usr/local/bin/fishzum Standardpfad hinzugefügt

Erst nachdem ich alle drei Dinge erledigt hatte, tauchten Fische als Standard für neue Terminalfenster auf.

urig
quelle
9

Mac OS X: So ändern Sie die Terminal-Shell

Gumbo
quelle
2
Ich würde empfehlen, diesen Ansatz zu bevorzugen und Ihre Standard-OSX-Shell nicht zu ändern. Ich hatte "unendliche Installationen" in iWorks - zum Beispiel - wegen Installationsskripten, bei denen davon ausgegangen wird, dass Sie eine SH-kompatible Shell haben (in meinem Fall nicht bei ZSH).
Cyber ​​Oliveira
8

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

  1. Öffnen Sie Ihr Terminal und drücken Sie command+ ,(Komma). Dies öffnet ein Einstellungsfenster.
  2. Die erste Registerkarte ist "Allgemein".
  3. Suchen Sie die Einstellung 'Shells öffnen mit' und wählen Sie die zweite Option, die einen vollständigen Pfad zur Shell benötigt.
  4. Fügen Sie den Link zu Ihrem Fischbefehl ein, was im Allgemeinen der Fall ist /usr/local/bin/fish.

In diesem Screenshot zshwird die Standardeinstellung festgelegt.

Screenshot der Eingabe von <code> / bin / zsh </ code> in den Terminal.app-Einstellungen

Ich benutze macOS Sierra . Funktioniert auch in macOS Mojave .

Pankaj
quelle
2
Zu guter Letzt! Eine Lösung, die für Nicht-Sudo-Benutzer funktioniert!
Ébe Isaac
7

Unter macOS Mojave musste ich Folgendes tun (am Beispiel von zsh):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
MagicDude4Eva
quelle
Hinweis: Mit dieser genauen Methode können Sie auch die neueste Version von Bash abrufen. stackoverflow.com/a/55011144/117471 Ich habe mir fast genau den gleichen Code ausgedacht .
Bruno Bronosky
1
Keine Notwendigkeit zu installieren zsh. Bereits auf macOS Mojave vorhanden. Auf Mojave gebündelt und standardmäßig in Catalina.
Basil Bourque
5

So erhalten Sie die neueste Version von Bash unter modernem MacOS (getestet auf Mojave).

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

Dann können Sie die Registerkarte im Vim-Stil vervollständigen, die nur für bash> = 4 verfügbar ist (die aktuelle Version in brewist 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
quelle
4

Mit dem chshProgramm können Sie Ihre Standard-Shell ändern. Es wird den vollständigen Pfad zur ausführbaren Datei benötigen. Wenn sich Ihre Shell also befindet fish, müssen Sie die Ausgabe bereitstellen, die bei der Eingabe angegeben wird which fish.

Sie sehen eine Zeile, die mit " Shell:" beginnt . Wenn Sie es noch nie bearbeitet haben, steht höchstwahrscheinlich " Shell: /bin/bash". Ersetzen Sie diesen /bin/bashPfad durch den Pfad zu Ihrer gewünschten Shell.

rejj
quelle
4

Öffnen Sie im Terminal die Terminaleinstellungen mit Command+ ,.

Wählen Sie auf der Registerkarte "Einstellung" eines der Themen aus und wählen Sie rechts die Registerkarte "Shell".

Sie können den Autostart-Befehl festlegen fish.

Heiligkeit
quelle
4

Diese Arbeit für mich auf Neuinstallation von Mac OSX (Sierra):

  1. Definieren Sie den aktuellen Benutzer als Eigentümer von Shells
sudo chown $(whoami) /etc/shells
  1. Füge Fisch zu / etc / shells hinzu
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Machen Sie Fish mit chsh zu Ihrer Standardschale
chsh -s /usr/local/bin/fish
  1. Definieren Sie die Wurzel als Eigentümer von Muscheln neu
sudo chown root /etc/shells
ZecKa
quelle
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 >

Ändern Sie einfach diesen Wert (mit dem Schreibbefehl in dscl).

Ordiel
quelle
Ich erhalte diesen Fehler, wenn ich read leeg ausführe: <dscl_cmd> DS-Fehler: -14136 (eDSRecordNotFound)
Léo Léopold Hertz 17
1
Ja. Das liegt daran, dass leeg mein Benutzername ist, nicht deins: P
0

Falls Sie Probleme mit den anderen Möglichkeiten haben, haben Sie auf Mac Mojave gearbeitet, sollten aber im Allgemeinen funktionieren.

which fish

Fügen Sie den Ausgabepfad zu "Systemeinstellungen> Benutzer & Gruppen> Rechtsklick Benutzer, Erweiterte Optionen" hinzu. Fügen Sie das Ergebnis in "Anmeldeshell:" ein.

SLuck
quelle
0

Führen Sie Folgendes aus, um Ihre Standard-Shell auf einem Mac zu ändern:

chsh -s <name-of-shell>

Die Liste der Muscheln, aus denen Sie auswählen können, ist:

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

Wenn Sie also von der Shell / bin / zsh wechseln möchten, sieht Ihr Befehl folgendermaßen aus:

chsh -s /bin/zsh

Sie können alle verfügbaren Shells auf Ihrem System anzeigen, indem Sie Folgendes ausführen:

cat /etc/shells
Chavez Harris
quelle