Ein Teil von $PATH kann nicht entfernt werden

Ich versuche, jedes Problem zu beheben, das ich in habe brew doctor, also sehe ich:

Warning: Some directories in your path end in a slash.
Directories in your path should not end in a slash. This can break other
doctor checks. The following directories should be edited:
    /usr/local/Cellar/node/5.0.0/bin/

Ich schaue in ~/.profile, ~/.bash_profile, /etc/paths– und sehe diesen Weg nicht.

Es gibt keine Dateien im /etc/paths.d/Ordner, die diese Zeichenfolge enthalten.

Also woher dieses $PATHTeil?

Hast du es echo $PATHin deinem Terminal versucht?
Der $PATH kann auch durch Startagenten/Daemons und jedes Shell-Skript in Ihren *Profildateien geändert werden!
@ user556068 versucht. Wie kann es mir helfen?
@klanomath okay, wie kann ich sie finden?
/Wollen Sie damit sagen, dass Sie beim Ausführen kein Verzeichnis sehen, das mit a endet echo $PATH?

Antworten (1)

Aus Ihrer Frage geht hervor, dass das Problem ein Verzeichnis ist, das mit einer /. Und es hört sich so an, als würde Homebrew Ihnen sagen, dass das Verzeichnis, das den Fehler verursacht, /usr/local/Cellar/node/5.0.0/bin/. /Wenn dies der Fall ist, müssen Sie einfach das Trailing aus diesem Verzeichnis entfernen .

Aber es hört sich auch so an, als würden Sie sagen, dass Sie dieses Problemverzeichnis nicht in Ihrer $PATH. Running echo $PATHzeigt Ihnen, welche Verzeichnisse sich in Ihrem PATH befinden. Wenn Ihr PATH wie meiner viele Verzeichnisse enthält, kann dies etwas schwer zu lesen sein. Vielleicht übersiehst du es also nur?

Auf jeden Fall ist hier ein einfaches Skript, das Ihnen alle Verzeichnisse in Ihrem PATH zeigt; 1 pro Zeile.

#!/bin/bash

# save IFS to a variable    
old_IFS=${IFS$' \t\n'}

#set IFS to a colon
IFS=':'

for item in ${PATH[@]}
do 
    echo $item
done

# set IFS back to the default setting
IFS=$old_IFS

Oder wenn Sie es vorziehen, direkt in Ihr Terminal zu kopieren und einzufügen:

old_IFS=${IFS-$' \t\n'}; IFS=':'; for item in ${PATH[@]}; do echo $item; done; IFS=$old_IFS

Oder ein noch einfacherer Weg, wie von fd0 in den Kommentaren angegeben:

tr -s ':' '\n' <<<"$PATH"

Dies hat auch den zusätzlichen Vorteil, dass man nicht mit herumspielen muss IFS.

Wenn Sie mit einem der oben genannten Skripte eine Zeile finden, die mit a endet, /haben Sie den Übeltäter gefunden.

trIhr Code könnte mit einem vereinfacht werden herestring-tr -s ':' '\n' <<<"$PATH"
@fd0 Danke für die Info. Ich habe die Antwort mit Ihrer vereinfachten Methode aktualisiert.
Nein, ich sehe dieses Problem als Teil von PATH, wenn ich es ausführe echo $PATH. Die Ausgabe wird sein /usr/local/Cellar/node/5.0.0/bin/ /usr/local/bin /usr/bin /bin /usr/sbin /sbin /opt/X11/bin /usr/local/sbin /Users/grawl/.composer/vendor/bin.
Dann müssen Sie das nachgestellte /von entfernen/usr/local/Cellar/node/5.0.0/bin/
@ user556068 offensichtlich. Aber ich kann keine Datei zum Bearbeiten finden.
Ich bin verwirrt.. oder du bist es. /usr/local/Cellar/node/5.0.0/binist ein Verzeichnis, keine Datei.