Fish 中 eval $PATH 的错误消息

Error Message on eval $PATH in Fish

运行 eval $PATH 生成此消息:

The file '/usr/local/var/rbenv/shims' is not executable by this user
- (line 1): begin; /usr/local/var/rbenv/shims /usr/local/bin /usr/local/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin 
                   ^
from sourcing file -
    called on line 60 of file /usr/local/Cellar/fish/HEAD/share/fish/functions/eval.fish    

in function 'eval'
    called on standard input

这似乎不会导致 rbenv 出现任何问题,只是想知道是什么原因导致此错误消息以及是否有人知道如何修复它。

这一切都在 OS X El Capitan 上,通过自制程序安装了 rbenv。

PS:这可能与“/usr/local/var/rbenv/shims”是目录而不是文件这一事实有关吗?如果是,为什么 fish 认为它是一个文件?

eval $$PATH 并不像您想象的那样。 eval 运行 通过一个额外的解析循环(引号和转义处理等)来处理它的参数,然后尝试 运行 结果作为命令。您的 PATH 不会评估为有效命令 - 它是 shell 查找命令的目录列表。通常,我希望它将整个目录视为一个命令并得到一个错误,因为它不是一个有效的命令名称。在这种情况下,它似乎将 PATH 中的每个目录都视为一个单独的词(因此将第一个目录视为命令,将其余目录视为该命令的参数)。您是否偶然将 IFS 设置为“:”?

无论如何,解决方法很简单:不要使用 eval $PATH。我不确定你想要它做什么,但不管你想要什么,你都需要找到一种不同的方式来做。