例如,chruby让用户通过定义其他ruby路径。以下内容:
红宝石+=(/opt/jruby-1.7.0"$HOME/src/rubinius")
有没有一种很好的方法可以在鱼身上实现这一点?
所有fish变量都是数组。所以从理论上讲,这就像一样简单
set -x RUBIES $RUBIES /opt/jruby-1.7.0 "$HOME/src/rubinius"
不幸的是,fish在导出变量时不会自动将该数组转换为一系列冒号分隔的值。目前,fish只对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构建的fish,你可以使用新的"string"内置语言在冒号上拆分和连接字符串:
set rubies (string split ':' $RUBIES)
set rubies $rubies /opt/jruby-1.7.0 "$HOME/src/rubinius"
set -x RUBIES (string join ':' $rubies)