Warum liefert der Befehl "which" doppelte Ergebnisse?


Antworten:


9

Überprüfen Sie Ihren Weg. Es ist nicht so schwer, Duplikate zu haben. Beispiel:

»echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:
»which -a bash
/bin/bash
/usr/bin/bash

Dies liegt daran, dass mein / bin ein Symlink zu / usr / bin ist. Jetzt:

»export PATH=$PATH:/usr/bin
»echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/bin
»which -a bash
/bin/bash
/usr/bin/bash
/usr/bin/bash

Da / usr / bin jetzt zweimal in meinem $ PATH ist, wird which -adieselbe Bash zweimal gefunden.


2
So erweitern Sie: Die Option -a meldet ALLE Übereinstimmungen in Ihrem PFAD. Dafür ist es da. Wenn Ihr $ PATH, wie bereits erwähnt, mehrmals auf dieselbe Stelle verweist oder sich dieselbe ausführbare Datei an mehr als einer Stelle befindet, wird sie mehrmals mit -a angezeigt (jedoch nicht, wenn diese Option weggelassen wird).
SuperMagic

2

Wie der Hinweis sagt und aus der Handbuchseite zitiert , listet "Which takes one or more arguments. For each of its arguments it prints to stdout the full path of the executables that would have been executed when this argument had been entered at the shell prompt. It does this by searching for an executable or script in the directories listed in the environment variable PATH using the same algorithm as bash(1)."die -aOption alle ausführbaren Dateien mit diesem Namen auf, die in $ PATH gefunden wurden.


1

Schauen Sie sich Ihren Weg an:

echo $PATH

Ihr Pfad enthält doppelte Einträge (oder Ruby wird mehrmals an verschiedenen Orten installiert).


1

Versuchen

whereis -b ruby

Wenn Sie dieselbe Ausgabe erhalten, liegt das Problem in Ihrem PFAD.

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.