見えざるものを見よこれぞ博打の真骨頂
今日も新たな発見がありました・・・・。
ほんとにもう何年やっとんねんみたいな話。
きっと・・・おそらく・・・多分・・・常識なんだろうなぁ。
やりたい事は変数をexportするという事。
↓のようなコードで変数をexportさせたいと。
$ HOGE=ABC $ echo $HOGE ABC
で↓のコードを書きましたとさ。
$ cat env.sh HOGE=ABC export HOGE
これでexportされるだろうと実行しましたとさ。
$ bash -x env.sh + HOGE=ABC + export HOGE
めでたくexportされませんでしたとさorz
$ echo $HOGE $
恥ずかしながら何故だか見当がつかず暫らく悩みました。
そして原因判明↓のコードで分かると思います。($$はperlと同じくpid)
$ cat pid.sh echo $$ $ echo $$; bash ./pid.sh 41252 41936
pidが違う・・・・。
そうつまり起動したプログラムは別プロセス、つまり別セッションで動いてました。
なのでexportしても今いるセッションからは変数掴めないと。
でこういう時はどうするかというと
can be executed within the running shell's process
って訳で.bash_profileとか.bashrcでお馴染みsourceを使うとさ。
これでめでたく・・・・・
$ source env.sh $ echo $HOGE ABC
できた!
それではお休みなさい・・・・。