Sergey,<br><br>I use bash together with the -eval command-line option. I find this gives me great flexibility because I can embed Erlang code directly in my shell script and enjoy the benefits of both bash and escript. It took a while to get the magical incantations right, but now it works like a charm. If I need to talk to an application on another node, I can do so as you say using rpc. And, of course, starting a shell is trivial from bash.<br>
<br>For example, here's a Bash shell function I use:<br><br><span style="font-family: courier new,monospace;">kill_node() {</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    echo "Node ${ERL_NODE_NAME} did not shut down when asked nicely, now halting it."</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    ${ERL_CMD} -noshell -noinput -boot ${CLEAN_BOOT_FILE} -sname ${USER}$$ \</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        -eval '</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">            Node = '''${ERL_NODE_NAME}''',</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">            rpc:call(Node, erlang, halt, [], 3000),</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">            init:stop(). '</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;">
<br>ERL_CMD uses erlexec directly, e.g.<br><br>export ROOTDIR=...<br>export BINDIR=...<br>ERL_CMD="${BINDIR}/erlexec -config ${CONFIG_FILE}"<br><br>Regards,<br>Edwin<br><br><div class="gmail_quote">On Mon, Nov 10, 2008 at 11:40 AM, Sergey A. <span dir="ltr"><<a href="mailto:n39052@gmail.com">n39052@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello.<br>
<br>
As I known there are two well-known approaches for writing a comand<br>
line interface for an erlang program: using escript and bash.<br>
<br>
I've chose escript as the language for writing my first interface.<br>
<br>
I hope it will be useful to see the source for somebody who is writing<br>
escript interface now. It's here:<br>
<br>
<a href="http://gist.github.com/23516" target="_blank">http://gist.github.com/23516</a><br>
<br>
Now about the question I have. With bash I can turn a working script<br>
into any program just by calling something like:<br>
<br>
erl -sname dbg -remsh myapp # <-- this starts the Erlang shell and<br>
tell it to connect to a remote node. After the shell will be closed,<br>
script will continue<br>
<br>
Thus, the bash script can be used both as a tool for manipulating a<br>
working Erlang application (you can call rpc:call, or smth like) and<br>
as a tool for opening Erlang shell with all the arguments passed<br>
(which is very useful when debugging. It just make life easy).<br>
<br>
Is there any way to open the erlang shell from an escript?<br>
<br>
Thanks.<br>
<font color="#888888"><br>
--<br>
Sergey.<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
<br>
</font></blockquote></div><br>