Как я могу сделать свой PATH более лаконичным в ZSH? - PullRequest
0 голосов
/ 25 мая 2018

Я использую ZSH.У меня были проблемы с запуском команд менеджера пакетов Anaconda в моем терминале.Я обнаружил, что могу добавить корзину к своему PATH, используя этот код:

export PATH="$HOME/anaconda3/bin:$PATH"

Это сработало.Все Anaconda и связанные с ними команды работают, и у меня остается этот PATH:

/Users/USER/anaconda3/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Но переменная PATH сбрасывалась каждый раз, когда я закрывал окно терминала.После некоторых исследований я выяснил, как изменить мой .zshrc, чтобы сделать его постоянным.Я просто вставил это в свой .zshrc:

export PATH=/Users/USER/anaconda3/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Все команды работают и являются постоянными, но разве я не настраиваю себя на неудачу в будущем?Все в ПУТИ, за исключением «/ Users / USER / anaconda3 / bin», были установлены автоматически.Что происходит, когда я обновляю Python, например?Как я могу включить часть «USER / anaconda3 / bin» моего PATH в мой .zshrc, не будучи таким явным?

1 Ответ

0 голосов
/ 25 мая 2018

Ваша ПУТЬ не относится к zsh.Вы можете организовать вещи по-другому.

Например, вы можете решить добавить каталог $HOME/bin/ в начале вашего PATH и поместить в него $HOME/bin/ символические ссылки на исполняемые файлы (или сценарии ), которые вы хотите использовать.Кстати, я рекомендую иметь короткий PATH (содержащий некоторые $HOME/bin/ и т. Д.), Так как он более эффективен и менее запутан для понимания.

Что происходит при обновлении Python дляпример?

Предположим, что Python установлен в вашей системе в /usr/bin/python (и что вы используете какой-то дистрибутив Linux - или какой-то другой Unix - с хорошим менеджером пакетов , имеющим делос этим; на MacOSX рассмотрим homebrew ).Когда этот файл /usr/bin/python обновляется, любой будущий exec его (например, с помощью некоторой оболочки) будет использовать новую версию.Внимательно прочитайте execve (2) .

Если у вас есть несколько Python-ов, а тот, который вы хотите использовать, находится под /Library/Frameworks/Python.framework/Versions/3.6/bin, и вы обновили его до некоторого Python 3.7, установленного под /Library/Frameworks/Python.framework/Versions/3.7/bin вам нужно изменить PATH.

Если вы последуете моему предложению, у вас (например) будет просто символическая ссылка с $HOME/bin/python до /Library/Frameworks/Python.framework/Versions/3.6/bin/python, и вы обновите эту символическую ссылку при установке Python3.7 используя, например:

# remove the old symlink
rm -v $HOME/bin/python
# add the new one
ln -sv /Library/Frameworks/Python.framework/Versions/3.7/bin/python \
   $HOME/bin/python

Во всех случаях вы несете ответственность за наличие достаточно хорошего PATH (и предпочтительно короткого).

...