У меня были похожие проблемы за последние пару дней, поэтому я проследил его до того, как bash обрабатывает команду «не найден». В Ubuntu 14.04 (и Linux Mint 17, где я использую скрипты 14.04), /etc/bash.bashrc имеет следующую функцию:
if [ -x /usr/lib/command-not-found ]; then
function command_not_found_handle {
# check because c-n-f could've been removed in the meantime
if [ -x /usr/lib/command-not-found ]; then
/usr/bin/python /usr/lib/command-not-found -- $1
return $?
else
return 127
fi
}
fi
Однако, / usr / lib / command-not-found был перезаписан для Python 3. Он обрабатывает команду /etc/bash.bashrc с помощью:
if sys.version < '3':
# We might end up being executed with Python 2 due to an old
# /etc/bash.bashrc.
import os
if "COMMAND_NOT_FOUND_FORCE_PYTHON2" not in os.environ:
os.execvp("python3", [sys.argv[0]] + sys.argv)
Это вызывает «python3» из пути, а не дает прямой путь. Чтобы исправить это, строка 22 из / usr / lib / command-not-found должна быть изменена с
os.execvp("python3", [sys.argv[0]] + sys.argv)
на
os.execv("/usr/bin/python3", [sys.argv[0]] + sys.argv)
Это похоже на ошибку с Ubuntu а не Анаконда. Я проверю, появится ли оно в последующих дистрибутивах.