##### 16.5.19.2 Defining a shell

Several shells are already defined in GPS: sh, bash, csh, tcsh and cmd.exe (Windows). It is possible to add other shells, using the node `remote_shell_config`.

The attributes for this node are:

`name (string) (mandatory)`
  The name of the shell. This name does not necessarilly correspond to the command used to launch the shell.

The following children are defined:

`start_command (mandatory)`
  The command used to launch the shell. If arguments are required, they should be put here, separated with spaces.
`generic_prompt (optional)`
  The regular expression used to identify a prompt after the initial connection. If not set, a default value is used.
`gps_prompt (mandatory)`
  The regular expression used to identify a prompt after the initial setup is performed. If not set, a default value is used.
`filesystem (mandatory)`
  Takes the following values: `unix` or `windows`. This is the filesystem used by the shell.
`init_commands (optional)`
  Complex child. Each `cmd` child contains a command used to initialise a new session.
`exit_commands (optional)`
  Complex child. Each `cmd` child contains a command used to exit a session.
`no_echo_command (optional)`
  Command used to suppress the echo of the remote shell.
`cd_command (mandatory)`
  Command used to go to a directory. `%d` is replaced by the directory's full name.
`get_status_command (mandatory)`
  Command used to retrieve the status of the last command launched.
`get_status_ptrn (mandatory)`
  Regular expression used to retrieve the status returned by `get_status_command`. A pair of parenthesis is required, and identifies the status.