Run shell in background
Feature, of a sort. If you are using a login shell, and if the huponexit shell option is enabled, then all jobs are sent a SIGHUP signal when the shell is exited. cp does not handle this signal, so the kernel applies the signal's default action, which is to terminate the process.
You have a few options:
- Turn off huponexit: shopt -u huponexit. The process may still exit if it ever tries to write to the terminal after it's been closed, depending on how it handles write errors. (Note that twiddling this option only affects that one shell. You'll need to add it to a shell startup script — or find and delete the corresponding command that's turning the option on — to have it apply to all shells subsequently started.)
- Use nohup to run the command instead. This wrapper ignores SIGHUP, letting the underlying command run unaffected. Standard output streams are redirected into a file.
- Use screen. This starts a completely new terminal session. You can detach to this session and reattach to it at a later time, as you please.