将*多个*路径附加到鱼中的 PYTHONPATH

Append *multiple* paths to PYTHONPATH in fish

Here 我阅读了如何在 fish 中附加到 PYTHONPATH,这对一个字符串来说效果很好。

但是,如果我这样做:

set --export PYTHONPATH $PYTHONPATH path1 path2

我明白了:

>> import os
>> os.environ["PYTHONPATH"]
'path1\x1epath2'

或者:

$ python -c "import os; print os.environ['PYTHONPATH']"
path1path2

这是怎么回事?

您可以通过在环境变量中以冒号分隔路径来设置多个路径。我不使用鱼,但例如在 ZSH 中,我会这样做:

$ export PYTHONPATH=/path/to/foo:/path/to/bar
$ python -c "import sys; print sys.path"
['', '/path/to/foo', '/path/to/bar', ...

如果您使用的是 fish 2.2.0(或刚刚发布的 2.3.0),则只有三个环境变量会自动拆分并用冒号连接:PATH、MANPATH、CDPATH。所有其他 "path" 列表环境变量都被视为单个元素数组,除非您像示例中那样将它们明确设置为多个值。但是,如果您在导出它们时这样做,则值将由 ASCII RS (0x1E) 字符分隔。您应该像在 bash、zsh 等

中一样处理 PYTHONPATH

fish 项目有几个未解决的问题,我们正在讨论对此类变量处理的可能改进。参见

https://github.com/fish-shell/fish-shell/issues/2090

https://github.com/fish-shell/fish-shell/issues/1656

https://github.com/fish-shell/fish-shell/issues/436

Fish 在即将发布的 3.0 版本中提供了一种新机制来处理这个问题。

请参阅以下 PR 了解更多信息:https://github.com/fish-shell/fish-shell/pull/5245