Mengapa perintah "yang" memberikan hasil duplikat?

Jawaban:

9

Periksa jalanmu. Tidak sulit untuk mendapatkan duplikat di dalamnya. Contoh:

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

Ini karena / bin saya adalah symlink ke / usr / bin. Sekarang:

»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

Karena / usr / bin sekarang di $ PATH saya dua kali, which -amenemukan bash yang sama dua kali.

goldilocks
sumber
2
Untuk memperluas: Opsi -a melaporkan SEMUA kecocokan di PATH Anda. Itu untuk apa. Jika, seperti disebutkan, $ PATH Anda mereferensikan tempat yang sama lebih dari sekali, atau executable yang sama ada di lebih dari satu tempat, itu akan muncul beberapa kali dengan -a (tetapi tidak ketika menghilangkan opsi itu).
SuperMagic
2

Seperti petunjuknya, dan mengutip dari halaman manual, "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)."Adapun -aopsi, itu daftar semua executable dengan nama yang ditemukan di $ PATH.

schaiba
sumber
1

Lihatlah jalanmu:

echo $PATH

Ada entri duplikat di jalur Anda (atau ruby ​​dipasang beberapa kali di lokasi yang berbeda).

Alexander
sumber
1

Mencoba

whereis -b ruby

Jika Anda mendapatkan output yang sama, maka masalahnya ada di PATH Anda.

TPS
sumber