Why Is There a Terminal Based Kind of Bash and a Coding Based Kind of Bash

In the Learn Command Line course I was used to calling Bash an Command Line Interface. I thought bash as just a tool that you can change the file system etc. But I saw the Learn Bash Scripting and I saw that there was a script.sh file. I saw there was that there was a code editor. It’s like that Bash is a coding language and also a Command Line interface. I am confused.

You have a few questions being asked, so I’ll do my best to break them down:

  1. What is the difference between Bash, the terminal, and the Bash scripting language?

They go together as a unit. the Bash terminal is one of several terminal interfaces used in modern computing, similar to cmd.exe in Windows or other Unix terminals like zterm, shell, termux, etc. Each terminal interface has its own scripting language to allow automation of tasks in the terminal. This scripting language is designed mostly for system administration tasks, for example, to run simple or complex database maintenance jobs on a daily basis, or to power-cycle several virtual systems running on a single server. The Bash scripting language is just the name of the one used in the Bash terminal, and is different from other scripting langauges. So a Bash script will not run in cmd.exe, and a zterm script will not work correctly in Bash.

  1. Is there a difference between Command Line and Terminals (implied by your other posts)?
    Yes, but no. the “command line” is a term that effectively means the same as “terminal interface”, although usually when people say “command line” they are actually referring to cmd.exe. But let’s back up a bit and refresh our vocabulary:

Interface: the visual and physical connection between you and your computer. You need some way to see what you are asking the computer to do, and a way to see the computer’s response, and that is done through an interface. This term is actually much MUCH deeper than that, but this definition is sufficient for our purposes.

  • Terminal: Without getting too historical or technical, the terminal is an interface that lets you interact with the filesystem or operating system. It is a purely text-based interface because graphical interfaces (GUIs) are resource intensive, and can take up valuable system resources on a server, without adding any value to the person working on them.

cmd.exe: The Windows-specific terminal that Microsoft developed for users to interact with Windows-based computers. It is essentially the continuation of MsDOS, the original Microsoft operating system from the 80s. When Microsoft began moving towards graphical interfaces, they decided to name their new system “Windows”, in reference to the fact that each individual program ran in a “window” rather than on your terminal. cmd.exe was the bridge between old DOS systems and newer Windows graphical systems. As computers evolved and DOS became obsolete, Microsoft just repurposed cmd.exe to be a generic terminal.

Bash: Another terminal, similar to cmd.exe, but developed for Unix/Linux systems. It does exactly the same thing, but uses different commands and keywords. Other than them being incompatible in the same way an English-speaking person and a Russian-speaking person are incompatible when trying to have a conversation, there is not much difference.

  1. Is a scripting language like Bash or shell good for game development?
    Again, yes and no. Learning and mastering a scripting language can help you more quickly navigate your system and do routine system maintenance tasks, and developing scripts can help you get better at using your computer, but it does not directly impact your ability to develop a game. Most games are developed using higher-level languages which provide much better functionality and flexibility, and I would recommend against learning a scripting language to get into game development, unless you are learning Python. The reason being that you’ll be frustrated with your project if you try, because it takes a lot of creativity and some pretty deep understanding of the language and whats happening under the hood to really take advantage of it.

  2. Not that you asked, but what should you do for game dev instead?
    I am not a game dev myself, but I would recommend getting a basic understanding of Bash or cmd.exe, depending on your operating system of choice, because thats just helpful in general. Then go learn Python. There are many Python frameworks that support game development, and its an easy language to learn as a beginner. You won’t be making anything too fancy, but you can do quite a bit with it. Once you have the basics of development in general down (all the generic concepts like variables, object-oriented programming, classes, functions, all that stuff), expand into a more complicated language like Java or C++. Those are by far the most popular languages for game dev and most engines will use them as a base. I believe the Unity Engine is in C++, so developing a Unity game will require pre-existing knowledge of C++.


Why would learn a scripting language if you are learning Python?

No, it’s main language is C#.

I already learnt Python, C# and C++ and Bash(not the scripting language).
I have token 16 courses.
I have done Codecademy for about 10 months.
In fact I’m asking a lot of questions because I getting ready to leave Codecademy and continue my coding journey.

Look at the courses I have completed:

I got a 120 day streak.

Later today, I going to get a 121 day streak.

I’ve learnt these things during 10 months:
To summarize:
A introduction to coding
Basic Python
More advanced Python
Data structures & algorithms
Some preparation for technical interviews
Basic C#
Basic C++
Basic Bash

Yay! I’ve got a 121 day coding streak.