Befehle nicht auf zsh gefunden


138

Ich verwende die z-Shell ( zsh) anstelle der Standard-Bash, und es passiert etwas falsch, sodass alle Befehle, die früher funktionierten, nicht mehr erkannt werden:

ls
zsh: command not found: ls

open -e .zshrc
zsh: correct 'open' to '_open' [nyae]? 

Ich weiß nicht, wie ich das zurücksetzen zshoder beheben soll. Hier ist der Inhalt der $PATHVariablen:

echo $PATH
/Users/Malloc/bin/Sencha/Cmd/3.1.2.342:/usr/local/bin/mate

Ich kann weder die .bash_profileDatei noch die .zshrcDatei öffnen , anscheinend besteht die einzige Lösung darin, die Datei zurückzusetzen zsh. Irgendwelche Ideen?

BEARBEITEN:

Ich habe sogar versucht, zshwie in diesem Thread angegeben zurückzusetzen , habe aber immer die folgende command not foundFehlermeldung erhalten:

exec zsh
zsh: command not found: zsh

so was ist los? Warum gehen alle Befehle verloren?

Antworten:


216

Es ist offensichtlich, dass Sie es geschafft haben, Ihre PATHVariable durcheinander zu bringen . (Ihre aktuelle PATHVersion enthält keinen Speicherort, an dem sich allgemeine 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

16
Als ich auf Catalina aktualisiert habe, bin ich auf die zsh-Shell umgestiegen, die meine Pfade so durcheinander gebracht hat, dass ich keine von mir verwendeten Apps von Drittanbietern mehr ausführen konnte. Ich musste nur die .zshrc-Datei ändern und "export PATH = << Speicherort meiner Bins >>" hinzufügen und habe exec / bin / zsh ausgeführt und alles war gut.
Robert Walters

18

Fügen Sie in Ihre ~ / .zsh-Konfigurationsdatei den Pfad zu Ihrer Bash-Pfaddatei ein, die Ihre Aliase enthält. In meinem Fall wurde die Zeile "source ~ / .bash_profile" in ~ / .zsh eingefügt.


1
Vielen Dank, es hat es für mich gelöst. Ich hatte das Problem nach dem Upgrade auf Catalina und wechselte zu zsh shell.
Neiya

1
Ich habe keine ~/.zshDatei. Stattdessen musste ich es hineinstecken /etc/zshrc.
Chase Roberts

13
  1. Verwenden Sie einen guten Texteditor wie VS Code und öffnen Sie Ihre .zshrcDatei (sollte sich in Ihrem Ausgangsverzeichnis befinden. Wenn Sie sie nicht sehen, klicken Sie beim Öffnen mit der rechten Maustaste in den Dateiordner und wählen Sie die Option "Versteckte Dateien anzeigen"). .

  2. Finden Sie heraus, wo es heißt: export PATH=a-bunch-of-paths-separated-by-colons:

  3. Fügen Sie dies am Ende der Zeile vor dem 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 verschwindet, nachdem Sie ihn in das Terminal eingegeben haben und Ihr 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 Pfad zum Ordner ersetzen.


Aha, darin liegt mein Fehler, der dazu führte, dass zsh meine PATHEinstellung anscheinend "ignorierte" . Von Bash war ich es gewohnt, Verzeichnisse in meinem Home-Ordner mit dem Präfix zu versehen ~. Es stellt sich also für zsh heraus, dass ich stattdessen die $HOMEVariable verwenden sollte, wie in Ihrem Beispiel.
Lalilulelost

7

Sie können einen Symlink in / usr / local / bin / erstellen

sudo ln -s $HOME/.composer/vendor/bin/homestead /usr/local/bin/homestead

Vielen Dank. Ich hatte Probleme und diese Antwort machte mir klar, dass ich keinen $HOMErelativen Pfad benutzte und bereitstellte. Die Verwendung des vollständigen Pfads hat $HOMEmein Problem behoben.
Tasomaniac

+1 für viele einfache Anwendungsfälle: Das Hinzufügen eines Symlinks ist der richtige Weg, wenn Sie nur eine ausführbare Datei hinzufügen möchten. Wenn Sie mehrere ausführbare Dateien in einem neuen Ordner verwalten möchten, ist das Hinzufügen zu $PATHin diesem Anwendungsfall besser.
David Bodow


4

Ich habe das Problem behoben, indem ich die Registerkarte "Allgemeine Terminaleinstellungen" geöffnet und den Befehl (vollständiger Pfad) /bin/bashauf "Standard" geändert und dann die ~/.zshrcDatei bearbeitet habe .

Geben Sie hier die Bildbeschreibung ein

export PATH="all your path inside the quotes"

... ohne Leerzeichen zwischen PATH="und speichern Sie die Datei.

Geben Sie hier die Bildbeschreibung ein

Ändern /bin/zshSie nach dem Speichern der Datei den Befehl oder wählen Sie Standard Geben Sie hier die Bildbeschreibung ein

... und starten Sie das Terminal neu und Ihre zsh-Shell sollte wieder funktionieren!


4

Wenn Sie mich mögen, haben Sie zwei Terminals App, eines ist das Standardterminal mit Bash als Standard-Shell 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:

Gehen Sie auf iTerm 2 zu Einstellungen (oder Befehl). Gehen Sie dann zur Registerkarte Profil und gehen Sie zum Befehl . Wie Sie unten auf dem Bild sehen können, müssen Sie auswählen Befehl - Option und den Pfad der zsh Shell einfügen (um den Weg zu finden, können Sie tun which zsh).

Geben Sie hier die Bildbeschreibung ein

Zu diesem Zeitpunkt haben Sie das zsh NUR für iTerm 2 als Standard-Shell und Bash als globale Standard-Shell für die Standard-Mac-Terminal-App. Als nächstes fehlen uns noch die Befehle von bash in zsh. Um dies zu tun, müssen Sie auf Ihre Bash gehen (wo Ihre Befehle funktionieren) und die PATH-Variable von env abrufen (verwenden Sie diesen Befehl, um dies zu tun :) env | grep PATH.

Sobald Sie das haben, gehen Sie zu Ihrem iTerm 2 und fügen Sie Ihren Pfad in die Option "Text beim Start senden" ein.

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin && clear

Öffnen Sie einfach iTerm 2 erneut und wir sind fertig!


Der Grund, warum wir den Export zu "Text beim Start senden" hinzugefügt haben, ist, dass aus irgendeinem Grund der Pfad bei jedem erneuten Öffnen von iTerm 2 immer auf den vorherigen Wert zurückgesetzt wurde. Dies ist also eine gute Möglichkeit, dies zu beheben.
Kamil B

3

Meine Lösung:

Wechseln Sie zurück zu bash:

source .bashrc

Nächster:

echo $PATH

Kopier das:

/home/frank/.asdf/shims:/home/frank/....

zurück zum zsh:

source .zsh

öffnen .zshrc :

und einfügen:

 export PATH=/home/frank/.asdf/shims:/home/frank/....

Terminal neu starten


1

In meinem Fall war der kommentierte Code versehentlich 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 funktionierte es wieder gut.

Ich habe das gerade hier gepostet, damit jemand es hilfreich findet. Weil es nur der Anfang der Zeile ist und versehentlich gelöscht werden könnte, wie ich es getan hatte. Und anscheinend gibt es keine Lösung, nachdem Sie verschiedene Möglichkeiten ausprobiert haben.



0

Wie andere bereits gesagt haben, sollte ein einfacher Neustart des Terminals nach Änderungen zurückgesetzt und Änderungen an Ihrer ~ / .zshrc-Datei vorgenommen 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 über die Befehlszeile zu öffnen.


0

Eine Möglichkeit, die .zshrc-Datei zu bearbeiten, ohne dies über iTerm2 oder das native Terminal unter macOS zu tun, besteht darin, ein Terminal in einer anderen Anwendung zu verwenden. Zum Beispiel habe ich das Terminal als Teil von VSCode verwendet und konnte die Datei finden und bearbeiten.


0

Beste Lösungsarbeit für mich für permanenten Veränderungspfad

Öffnen Sie den Finder-> und gehen Sie zum Ordner / Users / / usr / local / bin

Öffnen Sie .zshrc mit TextEdit

.zshrc ist eine versteckte Datei, also blenden Sie sie mit Befehl + Shift + ein. Drücken Sie

Löschen Sie den Inhalt und den Typ der Datei

export PATH = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

und speichern

jetzt

zsh: Befehl nicht gefunden Gone


-1

Das Deinstallieren und Neuinstallieren von zsh hat bei mir funktioniert:

sudo yum remove zsh
sudo yum install -y zsh
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.