例如chruby让用户通过定义额外的 ruby 路径。以下内容:
ruby +=( /opt/jruby-1.7.0 “$HOME/src/rubinius” )
有没有一种很好的方法可以在 fish 身上实现这一点?
最佳答案
所有的 fish 变量都是数组。所以理论上这会很简单
set -x RUBIES $RUBIES /opt/jruby-1.7.0 "$HOME/src/rubinius"
不幸的是,fish 在导出 var 时不会自动将该数组转换为冒号分隔值的字符串。目前,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)
关于shell - 将多个项目附加到 fish shell 中的路径(相当于 : +=),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37269310/