Ich verwende die z-Shell (zsh
) anstelle der Standard-Bash und es passiert etwas Falsches, sodass alle Befehle, die früher gearbeitet haben, nicht mehr erkannt werden:
ls
zsh: command not found: ls
open -e .zshrc
zsh: correct 'open' to '_open' [nyae]?
Ich weiß nicht, wie man zsh
zurücksetzt oder wie man das beheben kann. Hier ist der Inhalt von $PATH
variabel:
echo $PATH
/Users/Malloc/bin/Sencha/Cmd/3.1.2.342:/usr/local/bin/mate
Ich kann weder die .bash_profile
-Datei noch .zshrc
-Datei öffnen. Die einzige Lösung besteht darin, die zsh
zurückzusetzen. Irgendwelche Ideen?
EDIT:
Ich habe sogar versucht, zsh
zurückzusetzen, wie in diesem Thread angegeben, aber immer command not found
-Fehler bekam:
exec zsh
zsh: command not found: zsh
so was ist los? Warum gehen alle Befehle verloren?
Es ist offensichtlich, dass Sie Ihre Variable PATH
durcheinander gebracht haben. (Ihre aktuelle PATH
enthält keinen Ort, an dem sich häufig verwendete Dienstprogramme befinden.)
Versuchen:
PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
export PATH
Alternativ können Sie zum "Zurücksetzen" von zsh den vollständigen Pfad zur Shell angeben:
exec /bin/zsh
oder
exec /usr/bin/zsh
Verwenden Sie einen guten Texteditor wie Sublime-Text und öffnen Sie Ihre .zshrc
-Datei (sollte sich in Ihrem Home-Verzeichnis befinden. Wenn Sie ihn nicht sehen, klicken Sie beim Öffnen mit der rechten Maustaste in den Dateiordner und wählen Sie die Option zum Anzeigen ausgeblendeter Dateien.) ).
finden Sie heraus, wo es heißt: export PATH=a-bunch-of-paths-separated-by-colons:
fügen Sie dies am Ende der Zeile vor dem Ende-Anführungszeichen ein: :$HOME/.local/bin
Und es sollte für Sie funktionieren.
Sie können testen, ob dies zuerst funktioniert, indem Sie dies zuerst in Ihr Terminal eingeben: export PATH=$HOME/.local/bin:$PATH
Wenn der Fehler nicht mehr angezeigt wird, nachdem Sie dies in das Terminal eingegeben haben und das Terminal normal funktioniert, funktioniert die obige Lösung. Wenn dies nicht der Fall ist, müssen Sie den Ordner finden, in dem sich Ihr Referenzfehler befindet (das Objekt wurde nicht gefunden), und den obigen PFAD durch den PATH-TO-THAT-FOLDER ersetzen.
Sie können einen Symlink in/usr/local/bin/erstellen.
Sudo ln -s $HOME/.composer/vendor/bin/Homestead /usr/local/bin/Homestead
Fügen Sie in Ihre ~/.zsh-Konfigurationsdatei den Pfad zu Ihrer bash-Pfaddatei ein, die Ihre Aliasnamen enthält. In meinem Fall wurde die Zeile "source ~/.bash_profile" in ~/.zsh eingefügt.
Ein Neustart meines Terminals schien das Problem zu beheben.
Wenn Sie mich mögen, haben Sie zwei Terminals-App, eines ist das Standardterminal mit Bash als Standardshell und ein anderes iTerm 2 mit Zsh als Shell. Um sowohl Befehle als auch zsh in iTerm 2 von bash zu haben, müssen Sie Folgendes tun:
Wechseln Sie in iTerm 2 zu den Einstellungen (oder zum Befehl). Gehen Sie dann zur Registerkarte Profil und gehen Sie zu Befehl. Wie Sie auf dem Bild unten sehen können, müssen Sie die Option Befehl auswählen und den Pfad der zsh-Shell einfügen (um den Pfad zu finden, können Sie which zsh
ausführen).
An dieser Stelle haben Sie die zsh als NUR für iTerm 2 als Standardshell und Bash als globale Standardshell für die Standard-Mac-Terminal-App. Als nächstes fehlen noch die Befehle von bash in zsh. Um dies zu tun, müssen Sie Ihre bash (wo Ihre Befehle funktionieren) ausführen und die PATH-Variable von env abrufen (verwenden Sie diesen Befehl, um dies auszuführen: env | grep PATH
).
Sobald Sie das haben, gehen Sie zu Ihrem iTerm 2 und fügen Sie Ihren Pfad unter "Text beim Start senden" Ein.
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin && clear
Öffnen Sie einfach iTerm 2 und wir sind fertig!
Ich habe das Problem behoben, indem ich die Registerkarte Allgemein für die Terminaleinstellung geöffnet und den Befehl (vollständiger Pfad) in /bin/bash
in Standard geändert und die ~/.zshrc
-Datei bearbeitet habe.
export PATH="all your path inside the quotes"
... ohne Leerzeichen zwischen dem PATH="
und speichern Sie die Datei.
Ändern Sie nach dem Speichern der Datei den /bin/zsh
in Ihrem Befehl oder wählen Sie default .__ aus.
... und starten Sie das Terminal neu und Ihre zsh-Shell sollte wieder funktionieren!
In meinem Fall war der kommentierte Code fälschlicherweise in der ersten Zeile unkommentiert.
# If you come from bash you might have to change your $PATH.
Der Hash wurde entfernt. Nach dem Hinzufügen hat es wieder gut funktioniert.
Ich habe das gerade hier gepostet, damit jemand es hilfreich findet. Weil es nur der Anfang der Zeile ist und möglicherweise versehentlich gelöscht wird, wie ich es getan habe. Und es scheint keine Lösung zu geben, nachdem man mehrere Möglichkeiten ausprobiert hat.
Wie andere bereits gesagt haben, sollten Sie das Terminal einfach neu starten, nachdem Sie Änderungen vorgenommen haben, und die Änderungen an Ihrer ~/.zshrc-Datei sollten zurückgesetzt werden. Zum Beispiel nach dem Hinzufügen einer Funktion zum Öffnen von Visual Studio:
function code {
if [[ $# = 0 ]]
then
open -a "Visual Studio Code"
else
local argPath="$1"
[[ $1 = /* ]] && argPath="$1" || argPath="$PWD/${1#./}"
open -a "Visual Studio Code" "$argPath"
fi
}
Ich konnte den Schlüsselwortcode verwenden, um das Programm von der Befehlszeile aus zu öffnen.
Der Neustart des Terminals hat für mich auch den Trick gebracht.
Eine Möglichkeit, die .zshrc-Datei zu bearbeiten, ohne sie über iTerm2 oder das native Terminal unter macOS auszuführen, besteht darin, ein Terminal in einer anderen Anwendung zu verwenden. Ich habe das Terminal beispielsweise als Teil von VSCode verwendet und konnte die Datei finden und bearbeiten.
Deinstalliere und installiere zsh für mich:
Sudo yum remove zsh
Sudo yum install -y zsh