Я использую macOS High Sierra и обнаружил это странное поведение системы Python.
Таким образом, /usr/bin/xattr - это скрипт Python, который немедленно выводит сообщение об ошибке и завершает работу; и /usr/bin/xattr-2.7 - это тот, который выполняет настоящую работу xattr.
Если я запускаю /usr/bin/xattr или xattr или /usr/bin/python /usr/bin/xattr , все они будут запускать /usr/bin/xattr-2.7 вместо /usr/bin/xattr . Обратите внимание, что /usr/bin/xattr будет перенаправлять управление в /usr/bin/xattr-2.7 . Он печатает сообщение об ошибке немедленно.
Но если я перехожу в каталог /usr/bin и запускаю /usr/bin/python ./xattr или просто ./xattr , они запустят настоящий /usr/bin/xattr xattr и выведут сообщение об ошибке.
Так что мне интересно, что здесь за магия. Такое чувство, что Python, который поставляется с предустановленной версией, может добавить номер версии в скрипт перед выполнением указанной мной версии.
Следовать за:
Запуск Python из разных мест также приведет к другому поведению
bash-3.2$ cd /usr/bin
bash-3.2$ ./python /usr/bin/xattr
bash-3.2$ cp python /tmp
bash-3.2$ cd /tmp
bash-3.2$ ./python /usr/bin/xattr
python version 2.7.10 can't run /usr/bin/xattr. Try the alternative(s):
/usr/bin/xattr-2.7 (uses python 2.7)
Run "man python" for more information about multiple version support in
Mac OS X.
Я прикрепил оба файла здесь (https://gist.github.com/hotpxl/f16be705ac8b0cc6b7fbfe951cb68c7b)
