@RobinHook - Generally - if you start a graphical application like firefox from the terminal, it basically blocks the terminal until the application (in this case firefox) is closed.
As
@captain-sensible has pointed out - in order to start firefox and still be able to use the terminal you will need use
&
at the end of the command, which will run the application in the background.
Additionally - when running a graphical process in the background - it may also end up displaying lots of warnings, or error messages in the terminals stdout and stderr streams too. Some applications send a lot of messages, which can be disruptive if you plan to do other things in the terminal.
To avoid this eventuality - alongside running in the background, another thing you can do is - redirect
all terminal-based textual output from the process to /dev/null, like this:
The
&>
redirects the stdout and stderr streams from
firefox
to
/dev/null
and the
&
at the end of the line tells the shell to run firefox as a job in the background.
And firefox will continue to run in the background until you either shut it down (via one of firefox's usual methods e.g. - ctrl+q in firefox, or ctrl+w on the last open tab, or clicking on the close button etc), or until you use the kill command in the terminal to kill firefox.
NOTE:
/dev/null is a special device known as "The black hole", or "The bit bucket", or "The void". Anything sent to, or written to /dev/null is effectively lost.
And whenever /dev/null is read from, the result is always zero.
Once you have a job running in the background there are various job control commands like jobs, fg, bg, kill and killall - that can be used to control running jobs. But that goes a bit beyond the scope of what I'm explaining here.