Я выполняю на оболочке Ubuntu 12.04 следующую команду:
sudo bash -c "echo $PATH; which python"
который отображает что-то вроде
/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
и следующая команда
ls /home/me/env/develop/bin
диспли (среди других)
python
Согласно man
страницам команда which
ищет данный исполняемый файл во всех путях, определенных в PATH
. Страница man
строго не определяет «порядок» поиска, но обычно она проходит от начала до конца переменной среды PATH
.
Теперь путь /home/me/env/develop/bin
содержит исполняемый файл python (правильно установленные режимы, а не символическую ссылку), который также является первым путем в PATH
. Но команда which
отображает совершенно другое местоположение!
Это почему? Я делаю что-то глупое? Это волшебным образом связано с sudo
? Это ошибка?