1
たとえば、chrubyには、ユーザーが追加のルビーパスを定義しています。次魚のシェルのパスに複数の項目を追加します(+ =に相当)
ルビー+ =( /opt/jruby-1.7.0 "の$ HOME/SRC/Rubiniusの" )
魚でこれを実現するための良い方法はありますか?
たとえば、chrubyには、ユーザーが追加のルビーパスを定義しています。次魚のシェルのパスに複数の項目を追加します(+ =に相当)
ルビー+ =( /opt/jruby-1.7.0 "の$ HOME/SRC/Rubiniusの" )
魚でこれを実現するための良い方法はありますか?
すべての魚の変数は配列です。だから、理論的にはこれはVARをエクスポートするとき、残念ながら魚が自動的にコロンで区切られた値の文字列にその配列を変換しません
set -x RUBIES $RUBIES /opt/jruby-1.7.0 "$HOME/src/rubinius"
ような単純なものでしょう。現時点では、魚はPATHとMANPATHのためだけです。
あなたはこのようにそれを行うことができます。
set -x RUBIES "$RUBIES:/opt/jruby-1.7.0:$HOME/src/rubinius"
しかし、それはルビーがすでに設定されていると仮定します。さもなければ、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
、あなたは魚2.3(近日発売予定)やgitのヘッドから構築された魚を使用している場合は、文字列を分割し、参加するために、新しい「文字列」の組み込みを使用することができますコロン:
set rubies (string split ':' $RUBIES)
set rubies $rubies /opt/jruby-1.7.0 "$HOME/src/rubinius"
set -x RUBIES (string join ':' $rubies)
5行を使用してbashの1行でできることは本当に醜いですね。 – user3467349