def _handle_rundebug_from_shell(cmd_line):
command, args = parse_shell_command(cmd_line)<EOL>if len(args) >= <NUM_LIT:1>:<EOL><INDENT>get_workbench().get_editor_notebook().save_all_named_editors()<EOL>origcommand=command<EOL>if command == "<STR_LIT>":<EOL><INDENT>command="<STR_LIT>"<EOL><DEDENT>if command == "<STR_LIT>":<EOL><INDENT>command="<STR_LIT>"<EOL><DEDENT>cmd = ToplevelCommand(command=command,<EOL>filename=args[<NUM_LIT:0>],<EOL>args=args[<NUM_LIT:1>:])<EOL>if origcommand == "<STR_LIT>" or origcommand == "<STR_LIT>":<EOL><INDENT>cmd.environment={ "<STR_LIT>" : "<STR_LIT>", "<STR_LIT>": get_workbench().get_option("<STR_LIT>") }<EOL><DEDENT>if os.path.isabs(cmd.filename):<EOL><INDENT>cmd.full_filename = cmd.filename<EOL><DEDENT>else:<EOL><INDENT>runner=get_runner()<EOL>cmd.full_filename = os.path.join(runner.get_cwd(), cmd.filename)<EOL><DEDENT>if command in ["<STR_LIT>", "<STR_LIT>", "<STR_LIT>", "<STR_LIT>"]:<EOL><INDENT>with tokenize.open(cmd.full_filename) as fp:<EOL><INDENT>cmd.source = fp.read()<EOL><DEDENT><DEDENT>get_runner().send_command(cmd)<EOL><DEDENT>else:<EOL><INDENT>print_error_in_backend("<STR_LIT>".format(command))<EOL><DEDENT>
Handles all commands that take a filename and 0 or more extra arguments.
Passes the command to backend.

(Debugger plugin may also use this method)