По крайней мере, в bash
цитирование RHS приводит к тому, что оно рассматривается как сравнение строк
$ s=$(printf 'hello\nworld\nOK\n')
$ echo "$s"
hello
world
OK
$ [[ "$s" =~ OK$ ]] && echo "match" || echo "no match"
match
тогда как
$ s=$(printf 'hello\nworld\nOK$\n')
$ echo "$s"
hello
world
OK$
$ [[ "$s" =~ 'OK$' ]] && echo "match" || echo "no match"
match
Наличие python3 и python3.6 в каталоге /usr/bin
не означает, что у вас есть две установки Python. Обычно фактический интерпретатор Python устанавливается в /usr/bin/pythonX.Y
, где X — основная версия, а Y — дополнительная версия.
В вашем случае у вас фактически установлены две версии Python3.6:/usr/bin/python3.6
и /usr/bin/python3.6m
. /usr/bin/python3
и /usr/bin/python3m
— это просто символические ссылки на исполняемые файлы, как я упоминал ранее.
Тема StackOverflow посвящена различиям между этими двумя версиями:Разница между исполняемыми файлами python3 и python3m
Я не знаю, почему у вас установлен python3m, но я бы не стал удалять python3 из системы, если вы не установили его самостоятельно.
Как видно из вашего вопроса «/usr/bin/python3 -> python3.6
», python3
является символической ссылкой на python3.6
. Он не использует почти никакого пространства. Python3
будет ссылкой на последний python3.x
, чем вы установили.
Вы можете удалить ссылку, но не сломайте что-нибудь.
Может показаться, что у вас установлено два python /usr/bin/python3.6
и /usr/bin/python3.6m
. Однако не то, что может ссылка - это2
(2-е поле ). Если вы сделаете ls -lia /usr/bin/python*
, то увидите, что они оба имеют одинаковый номер инода (, это один и тот же файл, но два разных имени ). Некоторые программы смотрят на свои имена при запуске и меняют поведение в зависимости от своего имени.
Нет никаких свидетельств того, что установлено более одного Python 3.