Erlang の application:get_env/1 にはまる

アプリケーションのログディレクトリを erl -xxx log_dir <ユーザー入力> としていたのだが <ユーザー入力> の部分が . (カレントディレクトリ)になると

application_controller: syntax error before: '.': .

と謎のエラー。


これは get_env/1 の戻り値が Erlang Term であることに気付くと原因が分かる。Erlang Term として . がパースできないのが原因。
文字列として Erlang の世界に渡すには

log_dir '"."'

としないとだめ。


シェルスクリプトに埋め込むなら以下のようにする。

log_dir "\"$log_dir\"" \