First of all, every time you execute a command, you shell will
fork a new process, regardless of whether you run it with & or
not. & only means you're running it in the background. Note this
is not very accurate. Some commands, like cd are shell functions
and will usually not fork a new process. type cmd will usually
tell you whether cmd is an external command or a shell function.
type type tells you that type itself is a shell function. nohup
is something different. It tells the new process to ignore
SIGHUP. It is the signal sent by the kernel when the parent
shell is closed. To answer your question do the following: emacs
& (by default should run in a separate X window). - on the
parent shell, run You'll notice that the emacs window is killed,
despite running in the background. This is the default behavior
and nohup is used precisely to modify that. Running a job in the
background (with bg, I bet other shells have other syntaxes as
well) is a shell feature, stemming from the ability of modern
systems to mul