我正在使用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部分没有那么明确吗?
答案 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
(最好是短的)。