例如chruby让用户通过定义额外的 ruby 路径。下列:

卢比+ =(
/opt/jruby-1.7.0
“$ HOME / src / rubinius”
)

有没有很好的方法可以在鱼上做到这一点?

最佳答案

所有fish变量都是数组。所以从理论上讲这就像

set -x RUBIES $RUBIES /opt/jruby-1.7.0 "$HOME/src/rubinius"

不幸的是,当fish导出var时,它不会自动将该数组转换为由冒号分隔的字符串。目前,鱼只对PATH和MANPATH起作用。

您可以这样做:
set -x RUBIES "$RUBIES:/opt/jruby-1.7.0:$HOME/src/rubinius"

但这是假设已经设置了“RUBIES”;否则,您将得到一个带有前导冒号的字符串,该字符串对于使用var的任何软件可能有也可能没有特殊含义。处理起来很简单:
if set -q RUBIES[1]
    set -x RUBIES "$RUBIES:/opt/jruby-1.7.0:$HOME/src/rubinius"
else
    set -x RUBIES "/opt/jruby-1.7.0:$HOME/src/rubinius"
end

同样,如果您使用的是fish 2.3(即将发布)或从git head构建的鱼,则可以使用新的内置“字符串”来在冒号上拆分和加入字符串:
set rubies (string split ':' $RUBIES)
set rubies $rubies /opt/jruby-1.7.0 "$HOME/src/rubinius"
set -x RUBIES (string join ':' $rubies)

10-04 12:30