Saya mengeksekusi di shell Ubuntu 12,04 perintah berikut:
sudo bash -c "echo $PATH; which python"
yang menampilkan sesuatu seperti
/home/me/env/develop/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
/usr/bin/python
dan perintah berikut
ls /home/me/env/develop/bin
displys (amont others)
python
Menurut man
halaman which
perintah mencari executable yang diberikan di semua jalur yang didefinisikan dalam PATH
. The man
halaman tidak ketat menentukan 'pesanan' dari pencarian, namun biasanya ia pergi dari awal sampai akhir PATH
variabel lingkungan.
Sekarang, path /home/me/env/develop/bin
berisi python executable (mode diatur dengan benar, bukan tautan simbolik), yang juga merupakan path pertama di PATH
. Tetapi which
perintah menampilkan lokasi yang sama sekali berbeda!
Mengapa demikian? Saya melakukan sesuatu yang bodoh? Apakah ini secara ajaib ada hubungannya sudo
? Apakah ini bug?
type
sebagai gantiwhich