ねこものがたり

いちにちいっぽ

fishシェルで環境変数を指定してコマンドを実行したい

『なるほどUnixプロセス ― Rubyで学ぶUnixの基礎』を読んでいる最中です。今7章まで来ました。

7章は環境(変数)がテーマで、このようなコマンドが例示されています。

$ MESSAGE='wing it' ruby -e "puts ENV['MESSAGE']"

fishでやるとこうなりました。

$  MESSAGE='wing it' ruby -e "puts ENV['MESSAGE']"
fish: Unsupported use of '='. To run 'ruby' with a modified environment, please use 'env MESSAGE=wing it ruby…'
 MESSAGE='wing it' ruby -e "puts ENV['MESSAGE']"
 ^

環境変数のセット方法MESSAGE='wing it'bashのものなのでエラーになってしまいます。

fish shellチュートリアルにあるように、fishではset -x 変数名 値環境変数が設定できます。

$ set -x MyVariable SomeValue
$ env | grep MyVariable
MyVariable=SomeValue

とりあえずこれでやってみました。

$ set -x MESSAGE "wing it"
$ env | grep MESSAGE
MESSAGE=wing it
$ ruby -e "puts ENV['MESSAGE']"
wing it

なるほど!! いや、全然なるほどじゃない。ワンライナーでやりたい。できないのかなー。悶々。