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 manhalaman whichperintah mencari executable yang diberikan di semua jalur yang didefinisikan dalam PATH. The manhalaman tidak ketat menentukan 'pesanan' dari pencarian, namun biasanya ia pergi dari awal sampai akhir PATHvariabel lingkungan.
Sekarang, path /home/me/env/develop/binberisi python executable (mode diatur dengan benar, bukan tautan simbolik), yang juga merupakan path pertama di PATH. Tetapi whichperintah menampilkan lokasi yang sama sekali berbeda!
Mengapa demikian? Saya melakukan sesuatu yang bodoh? Apakah ini secara ajaib ada hubungannya sudo? Apakah ini bug?
typesebagai gantiwhich