尽管我的 PATH 设置正确并且 ZSH 中的权限也正确,但在我的 PATH 中找不到可执行文件 (pipsi)

尽管我的 PATH 设置正确并且 ZSH 中的权限也正确,但在我的 PATH 中找不到可执行文件 (pipsi)

我刚刚安装了pipsi。我在 Mac OS X Yosemite 上,我正在使用 iTerm 并zsh通过运行oh-my-zsh

我的问题是,我得到以下信息:

~ >>> pipsi
zsh: command not found: pipsi


~ >>> which pipsi
pipsi not found


~ >>> echo $PATH
~/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin


~ >>> cd ~/.local/bin


~/.local/bin >>> ls -al
total 8
drwxr-xr-x  3 jon  staff  102 Feb 23 19:25 .
drwxr-xr-x  5 jon  staff  170 Feb 23 19:25 ..
lrwxr-xr-x  1 jon  staff   39 Feb 23 19:25 pipsi -> /Users/me/.local/venvs/pipsi/bin/pipsi


~/.local/bin >>> cat pipsi
#!/Users/jon/.local/venvs/pipsi/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pipsi import cli

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(cli())


~/.local/bin >>> pipsi
pipsi not found

我不明白为什么系统不能正确查看~/.local/bin目录并找到可执行文件pipsi并运行它。为什么它会报告pipsi not found

答案1

根据您问题中提供的信息,您的$PATH变量设置如下:

~ >>> echo $PATH
~/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

不太确定你在哪里设置$PATH变量,但我相信在变量上下文中使用~/不会起作用$PATH;我不相信~/会正确扩展到/Users/jon/。所以我建议调整一下:

~/.local/bin

因此它明确指向你的主目录:

/Users/jon/.local/bin

根据 Gordon Davisson 的评论,另一个好主意/建议是,不知何故你~/.local/bin用双引号括起来。像这样:

PATH="~/.local/bin:$PATH"

放在双引号中的~/永远不会扩展为该上下文中的完整主路径。因此,请尝试将其放在外部像这样的引言:

PATH=~/.local/bin:"$PATH"

或者甚至做一些不同的事情,只需使用$HOME双引号内的变量,如下所示:

PATH="$HOME/.local/bin:$PATH"

再次强调,这一切都取决于$PATH用户 shell 配置中如何处理实际变量细节。因此,请根据您的具体需求进行调整和修改。

相关内容