Startup Commands

cmd2 provides a couple different ways for running commands immediately after your application starts up:

  1. Commands at Invocation
  2. Startup Script

Commands run as part of a startup script are always run immediately after the application finishes initializing so they are guaranteed to run before any Commands At Invocation.

Commands At Invocation

You can send commands to your app as you invoke it by including them as extra arguments to the program. cmd2 interprets each argument as a separate command, so you should enclose each command in quotation marks if it is more than a one-word command. You can use either single or double quotes for this purpose.

$ python examples/ "say hello" "say Gracie" quit

You can end your commands with a quit command so that your cmd2 application runs like a non-interactive command-line utility (CLU). This means that it can then be scripted from an external application and easily used in automation.


If you wish to disable cmd2’s consumption of command-line arguments, you can do so by setting the allow_cli_args argument of your cmd2.Cmd class instance to False. This would be useful, for example, if you wish to use something like Argparse to parse the overall command line arguments for your application:

from cmd2 import Cmd
class App(Cmd):
    def __init__(self):

Startup Script

You can execute commands from an initialization script by passing a file path to the startup_script argument to the cmd2.Cmd.__init__() method like so:

class StartupApp(cmd2.Cmd):
    def __init__(self):
        cmd2.Cmd.__init__(self, startup_script='.cmd2rc')

This text file should contain a Command Script. See the AliasStartup example for a demonstration.

You can silence a startup script’s output by setting silence_startup_script to True:

cmd2.Cmd.__init__(self, startup_script='.cmd2rc', silence_startup_script=True)

Anything written to stderr will still print. Additionally, a startup script cannot be silenced if allow_redirection is False since silencing works by redirecting a script’s output to os.devnull.