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?

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.


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


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.


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


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.


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.



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 .


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)

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"

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.


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.


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

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).


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.