it-swarm.com.de

befehle, die in zsh nicht gefunden werden

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?

60
Malloc

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
106
devnull
  1. 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.) ).

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

8

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

Sudo ln -s $HOME/.composer/vendor/bin/Homestead /usr/local/bin/Homestead
5
Adel Kihal

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.

4
dsteplight

Ein Neustart meines Terminals schien das Problem zu beheben.

3
Darion Miller

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

 enter image description here

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!

2
Kamil B

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.

enter image description here

export PATH="all your path inside the quotes"

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

enter image description here

Ändern Sie nach dem Speichern der Datei den /bin/zsh in Ihrem Befehl oder wählen Sie default .__ aus.enter image description here

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

2
Vish

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.

0

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.

0
Nathan Minarik

Der Neustart des Terminals hat für mich auch den Trick gebracht.

0
Sergio Acosta

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. 

0
Ramboo19

Deinstalliere und installiere zsh für mich:

Sudo yum remove zsh
Sudo yum install -y zsh
0
Geek