Starten Sie interaktives zsh, ohne Konfigurationsdateien wie .zshrc auszuführen

Starten Sie interaktives zsh, ohne Konfigurationsdateien wie .zshrc auszuführen

Wie kann ich ein interaktives zsh starten, ohne Konfigurationsdateien wie auszuführen .zshrc?

Ich habe es versucht zsh -d -f -i, aber die Eingabeaufforderung war die gleiche wie in angegeben ~/.zshrc. Diese Optionen scheinen also nicht funktioniert zu haben.

Ich verwende zsh 5.8 auf macOS 10.15.4.

Antwort1

zsh -d -f -iist hierfür richtig, obwohl -d(impliziert durch -f) und -i( zshläuft trotzdem interaktiv, wenn kein Skript/Code zum Ausführen auf der Befehlszeile angegeben ist und stdin ein Terminal ist) überflüssig wäre.

Beachten Sie jedoch, dass dies /etc/zsh/zshenvimmer noch interpretiert wird und ich glaube nicht, dass es eine Möglichkeit gibt, dies zu deaktivieren. info zsh RCSWeitere Einzelheiten finden Sie unter.

In Ihrem Fall PS1wurde es aus der Umgebung geerbt. PS1ist eine von vielen Umgebungsvariablen, mit denen die Shell auch angepasst werden kann.

Beachten Sie, dass die ersten Shells keine RC-Datei hatten. Die Anpassung erfolgte nur mit Umgebungsvariablen (die Sie im ~/.profileoder festlegen ~/.login, interpretiert von der Login-Shell).

Zur Konfiguration der Shell werden zahlreiche Variablen verwendet. Siehe:

info zsh 'Parameters Used By The Shell'

für Einzelheiten (beachten Sie jedoch, dass bei einigen von ihnen der in der Umgebung gefundene Wert ignoriert wird).

Einige dieser Umgebungsvariablen, wie z . B. HOME, PATH, SHELL, COLUMNS, LANG, LC_*werden von vielen anderen Programmen als der Shell verwendet. Es ist also keine gute Idee, sie zu löschen oder env -isie alle zu löschen.

Die meisten der in dieser Dokumentation aufgeführten Variablen möchten Sie nicht in die Umgebung einfügen, sondern ~/.zshrcstattdessen in Ihrer als normale Shell-Variablen deklarieren. PS1ist eine davon. PS1wird in vielen Shells als Variable zur Eingabeaufforderungsanpassung verwendet, die Syntax variiert jedoch erheblich zwischen den Shells.

Leider legen einige GNU/Linux-Distributionen die PS1Variable in einer Systemstartdatei fest, exportieren sie und definieren sie mit einem Wert, der spezifisch für die Syntax der bashShell (der GNU-Shell) ist. Das bedeutet, dass Sie eine Garbage-Prompt-Meldung erhalten, wenn Sie eine Shell bashin einer anderen Umgebung als dieser starten PS1.

Um eine Shell zu starten, die PS1aus der Umgebung entfernt wurde, haben Sie folgende Möglichkeiten:

(unset -v PS1; zsh -f)

Bei einigen envImplementierungen können Sie außerdem Folgendes tun:

env -u PS1 zsh -f

So starten Sie es ohne Umgebungsvariable (obwohl dies, wie oben angemerkt, wahrscheinlich keine gute Idee ist):

env -i zsh -f

verwandte Informationen