Shell – nohup: failed to run command `.’: Permission denied

aliasnohupshellsource

I tried execute my script using:

nohup . test.sh

and

nohup . ./test.sh

However, I got: nohup: failed to run command `.': Permission denied each time.

What I'm really trying to do is in my script be able to call commands that I've aliased, but it only works with ". test.sh" or ". ./test.sh", not "./test.sh" or "sh ./test.sh" as I get a "command not found". But I'd like to be able to run this with "nohup".

Best Answer

nohup runs an executable. You need to pass it an external command, i.e. an executable file. You can't call nohup on a shell construct such as an alias, function or builtin. nohup runs a new process, it doesn't run something inside the existing shell process (since nohup itself is a separate process), so nohup . … doesn't make sense.

nohup ./test.sh is the correct way to run a shell script with nohup. Make sure that the script properly starts with a shebang line (#!/bin/sh) and that the file is executable (chmod +x ./test.sh).

Related Question