このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

Erlang実験室:ブートスクリプトで.erlangを実行させないようにする

「Erlang実験室:コマンドラインから使うerl」にて:

バッチ的な実行では .erlang が邪魔になることがあります。~/.erlang を使うのをやめるか、ブートスクリプトを作り直すことになるでしょう(僕はやったことありません)。

やってみました。

Erlang/OTPリリースR12B-3 (erl5.6.3) での話ですが、他のリリースバージョンでも同じだと思います。

手順1

$OTP_ROOT/releases/R12B/ に行く。start_clean.script をコピーして start_norc.script という名前のファイルを作る。

手順2

start_norc.script の最後から2行目を削るかコメントアウトする。


{progress,applications_loaded},
{apply,{application,start_boot,[kernel,permanent]}},
{apply,{application,start_boot,[stdlib,permanent]}},
% {apply,{c,erlangrc,[]}},
{progress,started}]}.

手順3

次のコマンドをOSシェルから実行する。


$ erl -boot start_clean -noshell -eval '
> systools:script2boot("start_norc")
> ' -s init stop
$

もちろん、EShellを起動してEShellから systools:script2boot("start_norc"). と入力してもかまいません。これで、start_norc.boot というバイナリファイルができます。

手順4

start_norc.boot を $OTP_ROOT/bin/ にコピーする。

実行

-bootオプションに start_norc を指定する。


$ erl -boot start_norc -noshell \
> -eval 'io:fwrite("Hello.~n")' -s init stop
Hello.
$