Kann die ausführbare Datei (Pipsi) in meinem PFAD nicht finden, obwohl mein PFAD richtig eingestellt ist und die Berechtigungen auch in ZSH korrekt sind

1224
jononomo

Ich habe gerade installiert pipsi. Ich bin auf Mac OS X Yosemite und benutze iTerm und laufe zshvia oh-my-zsh.

Mein Problem ist, dass ich Folgendes bekomme:

~ >>> pipsi zsh: command not found: pipsi   ~ >>> which pipsi pipsi not found   ~ >>> echo $PATH ~/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin   ~ >>> cd ~/.local/bin   ~/.local/bin >>> ls -al total 8 drwxr-xr-x 3 jon staff 102 Feb 23 19:25 . drwxr-xr-x 5 jon staff 170 Feb 23 19:25 .. lrwxr-xr-x 1 jon staff 39 Feb 23 19:25 pipsi -> /Users/me/.local/venvs/pipsi/bin/pipsi   ~/.local/bin >>> cat pipsi #!/Users/jon/.local/venvs/pipsi/bin/python  # -*- coding: utf-8 -*- import re import sys  from pipsi import cli  if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(cli())   ~/.local/bin >>> pipsi pipsi not found 

Ich kann nicht verstehen, warum das System im ~/.local/binVerzeichnis einfach nicht richtig aussieht und die ausführbare Datei pipsigenau dort sieht und ausführt. Warum meldet es sich pipsi not found?

0

1 Antwort auf die Frage

3
JakeGould

Entsprechend den Informationen in Ihrer Frage wird Ihre $PATHVariable folgendermaßen festgelegt:

~ >>> echo $PATH ~/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 

Nicht sicher, wo Sie Ihre $PATHVariable einstellen, aber ich glaube, dass die Verwendung der Variablen ~/nicht im $PATHvariablen Kontext funktionieren wird. Ich glaube nicht, dass ich mich ~/richtig erweitern werde /Users/jon/. Ich würde also empfehlen, das anzupassen:

~/.local/bin 

Es verweist also explizit auf Ihr Home-Verzeichnis:

/Users/jon/.local/bin 

Eine andere großartige Idee / Vorschlag, die auf Gordon Davissons Kommentar basiert, ist, dass Sie irgendwie ~/.local/binmit doppelten Anführungszeichen gesetzt werden. Etwas wie das:

PATH="~/.local/bin:$PATH" 

Das ~/, was in doppelte Anführungszeichen gesetzt wird, wird in diesem Zusammenhang niemals auf den vollständigen Pfad erweitert. Platzieren Sie es stattdessen außerhalb der Anführungszeichen wie folgt:

PATH=~/.local/bin:"$PATH" 

Oder machen Sie vielleicht sogar etwas anderes und verwenden Sie die $HOMEVariable einfach in Anführungszeichen wie folgt:

PATH="$HOME/.local/bin:$PATH" 

Das wiederum hängt davon ab, wie Ihre tatsächlichen $PATHVariablenspezifikationen in der Shell-Konfiguration Ihres Benutzers behandelt werden. Passen Sie diese also an Ihre speziellen Bedürfnisse an.

Ich vermute, das Problem liegt an der Einstellung von PATH = "~ / .local / bin: $ PATH" `, und da das" ~ "in Anführungszeichen steht, wird es nicht auf den eigentlichen Home-Pfad erweitert. Verwenden Sie stattdessen entweder PATH = ~ / .local / bin: "$ PATH" (außerhalb der Anführungszeichen, also wird es erweitert) oder `PATH =" $ HOME / .local / bin: $ PATH "( `$` Ausdrücke werden in Anführungszeichen gesetzt). Gordon Davisson vor 9 Jahren 1
@GordonDavisson Hervorragender Kommentar und Idee. Ich dachte selbst darüber nach, war mir aber nicht zu 100% sicher. Vielen Dank für das Kommentieren und Verdeutlichen. Meine Antwort wurde bearbeitet, um diese Info hinzuzufügen, nur für den Fall, dass das auch klärt. JakeGould vor 9 Jahren 0