如何在ZSH中使我的PATH更简洁?

时间:2018-05-25 04:54:32

标签: python anaconda zsh

我正在使用ZSH。我在终端中运行Anaconda包管理器命令时遇到了麻烦。我发现我可以使用以下代码将bin添加到PATH中:

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

那很有用。所有的Anaconda和相关命令都有效,它给我留下了这条路径:

/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

所有命令都是有效的,并且是永久性的,但是我不能让自己在路上失败吗? PATH中的所有内容,减去" / Users / USER / anaconda3 / bin"自动设定。例如,当我更新Python时会发生什么?如何包含" USER / anaconda3 / bin"我的.zshrc中的PATH部分没有那么明确吗?

1 个答案:

答案 0 :(得分:0)

PATH关注的问题不是zsh。你可以用不同的方式组织事情。

例如,您可以决定在$HOME/bin/的早期添加目录PATH,并将$HOME/bin/符号链接放入executables(或scripts } 想要使用。顺便说一句,我建议有一个简短的PATH(包含一些$HOME/bin/等...),因为它更有效,更难以理解。

  

例如,当我更新Python时会发生什么?

假设Python已安装在您/usr/bin/python的系统中(并且您使用了一些Linux发行版 - 或其他一些具有良好package manager处理能力的Unix;在MacOSX上考虑homebrew)。当该文件/usr/bin/python更新时,它的任何未来exec(例如某些shell)将使用新版本。仔细阅读execve(2)

如果你有几个Python-s而你要使用的那个是/Library/Frameworks/Python.framework/Versions/3.6/bin并且你将它升级到/Library/Frameworks/Python.framework/Versions/3.7/bin下安装的某个Python 3.7,你需要更改你的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(最好是短的)。