Because the shell does not pass aliases to child processes (unless you use $ () or ``).
$ alias sayHello = '/ bin / echo "Hello world!"
Now in this shell process, an alias is known that works fine, but only works in this single-class process.
$ sayHello Hello world!
Since you said "sayHello" in the same shell, it worked.
$ nohup sayHello
Here, the nohup program starts as a child process. Therefore, he will not receive pseudonyms. Then it starts the child process "sayHello" - which is not found.
For your specific problem, it is best to use the new "perl" and "python" as common as possible. I would suggest setting a search path.
In your ~ / .bash_profile add: export PATH = "/ my / shiny / interpers / bin: $ {PATH}"
Then go.
Since this is an environment variable, it will be passed to all child processes, whether they are shells or not — it should now work very often.
source share