У меня запутанная путаница установок Python на моем ноутбуке. Я смотрел на исполняемые файлы, /usr/local/bin
и все они являются символическими ссылками на../../../Library......
Вокруг этого странного поведения. Если я ls -lhaG
увижу, я вижу --->
и относительный путь справа от символических ссылок:
lrwxr-xr-x 1 root wheel 69B Dec 7 22:29 python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.1/bin/python3
Тем не менее, я не могу получить какие-либо инструменты командной строки для разрешения этого пути и отображения фактического пути к python3. Я нашел некоторые лакомые кусочки здесь и там относительно использования pwd -P
и find
полезности для этого. Проблема в том, что они не работают на OS X так, как люди описывают их работу на Linux (т.е. выводят полный путь к символической ссылке). Они просто печатают путь символических ссылок для меня:
FantasticMrFox:bin robert$ pwd -P python3
/usr/local/bin
FantasticMrFox:bin robert$ find `pwd -P` -name python3
/usr/local/bin/python3
Есть идеи о том, что здесь происходит?
../..
.Это решает рекурсивно и возвращает абсолютный путь:
Или неинтерактивная версия:
источник
$ python -c "import os; print os.path.realpath('bin')"
>>/Users/jason/Applications
. Я символическую ссылку ~ / bin на ~ / Applications, чтобы иметь единый .bash_profile / $ PATH для систем Mac и * nix.pwd
иfind
команды , которые я говорил в вопросе решимости полного пути на других , чем OS X. I системы не проверял их , хотя.Возможно, эта дискуссия о переполнении стека поможет вам: Как разрешить символические ссылки в сценарии оболочки. В частности, рассмотрите этот ответ .
источник
GNU coreutils-8.15 добавил в 2012 году новый инструмент командной строки,
realpath
который делает то, что вы хотите: он разрешает цепочки символических ссылок и выводит результат в виде абсолютного (по умолчанию) или относительного пути.Apple , еще не включает
realpath
в MacOS (они , к сожалению , кажется, избегают все инструменты GPLv3), но вы можете легко установить его самостоятельно, например , с помощью Homebrew:brew install coreutils
.источник
Вы можете использовать
readlink -f
. Он повторяется по всем ссылкам. Предположим, что ссылка - это путь, который далее является ссылкой. Вы хотели бы иметь окончательный абсолютный путь.источник
read link -f python3
Например, правильный синтаксис того, что говорит @DINESH SEHRA, заключается в том , что он буферизует полную символическую ссылку для вас.-f
никогда не существовало в OS X версии readlink.