I am getting an exception like java.io.IOException: Cannot run program cat /home/talha/* | grep -c TEXT_TO_SEARCH\": error=2, No such file or directory
while execut
$PATH
is an environment variable that tells the system where to search for executable programs (it's a list of directories separated by colons). It is usually set in your .bashrc
or .cshrc
file but this is only loaded when you log in. When Java runs, $PATH
is likely not set because the rc
file is not executed automatically, so the system can't find programs without specifying exactly where they are. Try using /bin/cat
or /usr/bin/cat
instead of just cat
and see if it works. If it does, $PATH
is your problem. You can add $PATH=/bin:/usr/bin
to your script or just leave it with the directory name specified (e.g. /bin/cat
).
Just because you can execute it in a login session doesn't mean it will work the same when a daemon like your Java program runs. You have to know what's in your .bashrc
or .cshrc
file and even sometimes how the system file is written (/etc/bashrc
) in order to know how to write a script that runs under a daemon. Another consideration is that daemons often run under the context of a different user, and that throws things off, too.