On Sun, 2007-03-25 at 18:48 +0800, Matt Arnilo S. Baluyos (Mailing Lists) wrote: > Hello everyone, > > I'm setting up a fetchmail command to run every five minutes so I can > get email from another POP3 account. The fetchmail package was > installed via yum. > > I can execute the command manually on the command line. But I'm having > trouble when it's run from cron. > > I have noticed that commands run via cron and execute via /bin/sh, so > I tried to run the fetchmail command manually. This is what I get: > > [root at scalix ~]# /bin/sh /usr/bin/fetchmail > /usr/bin/fetchmail: /usr/bin/fetchmail: cannot execute binary file > > What could be the problem here? Anyone else having problems with fetchmail? > Going from memory, so I hope this is not too erroneous. As you may have deduced from the other replies, you don't *need* "/bin/bash" at the start of the command line when executing a typical binary. Even for cron entries. The linker/loader has some logic to automatically handle various binary formats. In fact, AFAIR, the convention of the first line in a shell script having something like "#!/bin/bash" was to allow this same "automatic" loading to occur. I've never followed up to see if any OS implementation actually handles it correctly. I presume that a program would call the loader and pass the file name to get it to work, if it does indeed work. Further, I believe that normal shell scripts don't need the leading "/bin/sh" (or similar) either. As another respondent pointed out, the default is to execute via "/bin/sh -c ...." or similar. For binaries, this does interject a small amount of additional overhead. It is not significant. One point of significance: the environmental variables that exist at command line do/may not be set/correct when crontab invokes a process. For this reason, some binaries may need a "wrapper" script that is called by cron. It may be as simple as #!/bin/bash --login... some more stuff" or even just contain "." (or "source", if you prefer) command to read the appropriate .bashrc or .bash_profile to inject needed variables into the environment. HTH -- Bill