====== Command Shell ======

A command shell is a special form of a Synchronet module which is responsible for displaying text (menus, prompts, etc.) to remote [[server:terminal]] users and accepting their input as commands to perform BBS functions (e.g. reading messages, downloading files, chatting, playing games, etc.).

In Synchronet v3, command shells are typically written in a BASIC-like language (in a ''.src'' file) and compiled with a program called [[util:Baja]] into an interpreted binary (''.bin'') file. It is also possible to write command shells in [[custom:JavaScript]]. In Synchronet versions prior to v3.20, a JavaScript command shell actually required a small ''.bin'' module (compiled Baja source) as a stub to load and execute the JavaScript (''.js'') file.

A BBS can have one or more command shells available for its users (configured in [[util:SCFG]]->Command Shells). If the BBS has more than one shell available, each user can pick their shell of preference in their user configuration menu and the BBS will remember their shell of choice and use it for each of their logon sessions. A sysop can even make select shells only available to specific groups/sub-groups of users based on a wide range of [[:access:]] criteria (including terminal type/capabilities).

There are many existing Synchronet command shells available (e.g. [[http://vert.synchro.net/files/Main/BAJAMODS/|here]] and [[http://vert.synchro.net/files/Main/SBBS_3RD/|here]]). 

The default command shell (''default.js'') is officially referred to as the //Synchronet Classic Shell// (it emulates the Synchronet v1 user interface) and if you and your users have no special requirements or preferences, it'll probably be the only shell you'll ever need (source code is ''[[dir:exec]]/default.js''). If you or your users are used to another BBS menu/command style, there are shells available which emulate the style of other classic BBS programs (e.g. WWIV, Renegade, PCBoard, MajorBBS, Wildcat!, Oblivion/2, etc.) as well as shells which are intended for use by users of limited BBS experience (e.g. //Synchronet Simple Shell//), and specialized shells (e.g. ''sdos'' emulates MS-DOS and ''lbshell'' is a full-screen light-bar shell by [[person:Deuce]]).

Shells included with Synchronet:
  * Synchronet (Classic) (''default.js'')
  * Synchronet (Novice) (''simple.bin'')
  * WWIV Clone (''wwiv.bin'')
  * PCBoard Clone (''pcboard.bin'')
  * Wildcat Clone (''wildcat.bin'')
  * MajorBBS Clone (''major.bin'')
  * Renegade Clone (''renegade.bin'')
  * Oblivion/2 Clone (''obv-2.bin'')
  * Deuce's Lightbar Shell (''lbshell.js'')
  * Simulated MS-DOS (''sdos.bin'')

Installing 3rd party command shells, modifying existing/stock command shells, or creating your own command shells from scratch are all options available to Synchronet sysops. These options provide the capability for a sysop to create a highly customized interface and experience for their BBS users.

===== See Also =====
  * [[:custom:|Customization]]
  * [[:custom:JavaScript]]
  * [[:util:Baja]]

{{tag>baja javascript}}
