「which」コマンドで結果が重複するのはなぜですか?


回答:


9

パスを確認してください。重複が発生することはそれほど難しくありません。例:

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

これは、私の/ binが/ usr / binへのシンボリックリンクであるためです。今:

»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

/ usr / binが$ PATHに2回あるのでwhich -a、同じbashを2回検出します。


2
展開するには:-aオプションは、PATH内のすべての一致を報告します。それが目的です。前述のように、$ PATHが同じ場所を複数回参照している場合、または同じ実行可能ファイルが複数の場所にある場合、-aを指定すると複数回表示されます(ただし、このオプションを省略した場合は表示されません)。
SuperMagic 2013年

2

ヒントが示すように、およびマニュアルページから引用する"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)."と、-aオプションについては、$ PATHにあるその名前の実行可能ファイルがすべてリストされます。


1

あなたの道を見てください:

echo $PATH

パスに重複したエントリがあります(またはrubyが異なる場所に数回インストールされています)。


1

試す

whereis -b ruby

同じ出力が得られる場合、問題はPATHにあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.