This code will allow you to execute shell code as if it has been typed in a terminal application.
This should work on devices whether they have been rooted or not.
var globs={}; //Called when application is started. function OnStart() { var lay = app.CreateLayout("Linear","Vertical,FillXY"); var txtopts = "MultiLine,ReadOnly,NoKeyboard,NoSpell,Left,MonoSpace" var txt = app.CreateTextEdit("Please wait", -1, -1, txtopts); lay.AddChild(txt); app.AddLayout(lay); globs.sys = app.CreateSysProc( "sh" ); globs.stdout = "/sdcard/stdout.txt" globs.redir = " >> " + globs.stdout + " 2>&1 \n "; sysEmpty(); //check PATH variable sysEcho( "$PATH", true ); sysOut("SJG=Steve ;export SJG"); //list all environment variables sysOut( "set", true ); sysOut( "set | grep STOR", true ); //display filesystem sysOut("df", true); //Change directory sysOut("cd /sdcard"); //show path sysOut("pwd", true); sysOut("ls -l"); sysStamp(); //test stderr sysOut("badCommand"); sysOut("ls -l /data"); sysOut("exit"); txt.SetText(app.ReadFile(globs.stdout)); app.Alert(app.GetEnv("EXTERNAL_STORAGE")); } function sysEmpty(stamp) { app.DeleteFile(globs.stdout); if(stamp) sysStamp(); } function sysOut (cmd, stamp) { if(stamp) sysStamp(); globs.sys.Out(cmd + globs.redir) } function sysEcho(msg, stamp) { sysOut('echo "' + msg +'"', stamp ); } function sysStamp() { var d = new Date(); sysEcho("**************************"); sysEcho(d.toISOString()+" *"); sysEcho("**************************"); }