> For the complete documentation index, see [llms.txt](https://dev-docs.linuxgsm.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev-docs.linuxgsm.com/getting-started/programming-language.md).

# Programming Language

![](/files/-Lu30cfv1TvSQKa_KTId)

LinuxGSM is written in [Bourne-Again Shell](https://en.wikipedia.org/wiki/Bash_%28Unix_shell%29) (BASH) Script sometimes just known as Shell Script.

## What is BASH?

*BASH* is a "Unix shell": a command-line interface for interacting with the operating system. It is widely available, being the default shell on many GNU/Linux distributions and Mac OSX, with ports existing for many other systems.

{% embed url="<https://www.youtube.com/watch?v=I4EWvMFj37g>" %}

## What is BASH Script?

"In addition to the interactive mode, where the user types one command at a time, with immediate execution and feedback, Bash (like many other shells) also has the ability to run an entire script of commands, known as a "Bash shell script" (or "Bash script" or "shell script" or just "script"). A script might contain just a very simple list of commands — or even just a single command — or it might contain functions, loops, conditional constructs, and all the other hallmarks of imperative programming. In effect, a Bash shell script is a computer program written in the Bash programming language." -[ Bash Shell Scripting](https://en.wikibooks.org/wiki/Bash_Shell_Scripting#What_is_Bash?)

## Why Does LinuxGSM use BASH?

BASH script is often used by Linux System Administrators to automate repetitive tasks on Linux servers and is often used in the same way Windows Admins use [BATCH](https://en.wikipedia.org/wiki/Batch_file) Script or [Powershell](https://learn.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.3) on Windows. BASH is available on all Linux systems, it is very stable and reliable and most people who interact with Linux will have had some exposure to it.

LinuxGSM started as a simple BASH script to easily control and manage a game server (Killing Floor). As Daniel Gibbs (lead developer) was a Linux Systems Administrator at the time and other examples of managing game servers often used BASH it simply made sense to use it.

LinuxGSM has evolved and grown drastically over time to add more commands and features from the early days, however, it essentially still does the same thing just on a larger scale. BASH is a relatively simple language to use and learn, does not require compiling, and can be written in any basic text editor.

## BASH Resources

There are loads of resources to help you learn BASH and below are a few. If you get stuck it is already recommended that you Google as there is probably a [Stackoverflow](https://stackoverflow.com/) question raised.

{% embed url="<https://www.shellscript.sh/>" %}

{% embed url="<https://linuxconfig.org/bash-scripting-tutorial-for-beginners>" %}

{% embed url="<https://www.tldp.org/guides.html>" %}

{% embed url="<https://en.wikibooks.org/wiki/Bash:Shell:Scripting#Introduction>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://dev-docs.linuxgsm.com/getting-started/programming-language.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
