読者です 読者をやめる 読者になる 読者になる

ブログの名前なんて適当で良いのでは

説明を求めるな、記事を読め

fishにおけるRUBYLIBの設定に違和感

rubyにおいてrequireを使って自作ライブラリを読み込むために,環境変数のRUBYLIBを使ってパスを追加する時があります.   bashzshではexportコマンドなどで*rcファイルに書けば済むのですが,fishの場合少し謎な挙動をしていたので,備忘録を書いておこうと思います.

通常bashなどでは,

export RUBYLIB=$RUBYLIB:/the/path/you/wanna/add

といったように記述すると思いますが,fishの場合はsetコマンドの-x(exportオプション)を使って設定します.
そこで,以下のように

set -x RUBYLIB /path/path/you/wanna/add $RUBYLIB

設定します.この状態だとfishでは,echo $RUBYLIB[1]で1つ目のパスだけを表示することが出来ます.

しかし,irbでrequireできるかテストをしてみると,requireに失敗します. そこで,まさかと思い,":"でつなげる感じに変えてみました.最初のbashなどと同じような設定になるように繋げてみるということです.

set -x RUBYLIB /the/path/you/wanna/add:$RUBYLIB

これだとecho $RUBYLIB[1]した時に,すべての環境変数入ってしまい$RUBYLIB[2]にアクセスはできないのですが,requireには成功します.

この挙動の違いは何なんでしょうか・・・$PATHなどは,前者のほうで正しく機能しているのですが,RUBYLIBに関しては後者だと動きません.fishというよりもそもそもの環境変数への理解が足りていない気もしますね・・・.