【问题标题】:How can I make my PATH more succinct in ZSH?如何让我的 PATH 在 ZSH 中更简洁?
【发布时间】:2018-05-25 04:54:31
【问题描述】:

我正在使用 ZSH。我在终端中运行 Anaconda 包管理器命令时遇到问题。我发现我可以使用以下代码将 bin 添加到我的 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

所有命令都有效并且是永久性的,但我不是在为将来的失败做好准备吗? PATH 中的所有内容,减去“/Users/USER/anaconda3/bin”都是自动设置的。例如,当我更新 Python 时会发生什么?如何在我的 .zshrc 中包含我的 PATH 的“USER/anaconda3/bin”部分而不如此明确?

【问题讨论】:

  • 您尝试的第一个命令 export PATH="$HOME/anaconda3/bin:$PATH" 也应该可以在您的 .zshrc 中使用。

标签: python anaconda zsh


【解决方案1】:

您对PATH 的关注与zsh 无关。你可以用不同的方式组织事情。

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

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

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

如果您有多个 Python-s,而您要使用的 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(最好是短的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2012-01-11
    • 2018-03-16
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    相关资源
    最近更新 更多