X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Fri, 06 Jun 2008 12:19:29 -0400 From: "Pierre A. Humblet" Subject: Re: Patch to allow Cron to use non-POSIX shells like Powershell.exe and CMD.exe To: "Blair Sutton" , Message-id: <00da01c8c7f1$1982d6f0$d50410ac@wirelessworld.airvananet.com> MIME-version: 1.0 X-Mailer: Microsoft Outlook Express 6.00.2900.3138 Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7bit References: <2abc9c2d0806040808s2178885ak5dcf7cd528ea685a AT mail DOT gmail DOT com> <2abc9c2d0806040948l2f6dc1cbjd99bbdaea65cf181 AT mail DOT gmail DOT com> <006701c8c756$1b923260$d50410ac AT wirelessworld DOT airvananet DOT com> <2abc9c2d0806051528w6aa5c8f5g6bf946291171d579 AT mail DOT gmail DOT com> <2abc9c2d0806060116t2da2970as52d545f7a38560b7 AT mail DOT gmail DOT com> Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com ----- Original Message ----- From: "Blair Sutton" <> To: Sent: Friday, June 06, 2008 4:16 AM Subject: Re: Patch to allow Cron to use non-POSIX shells like Powershell.exe and CMD.exe | On further investigation, it appears powershell does alias "-c" for | "-command" hence no changes would be required for cron to support it. | However, the change would still be useful for other shells or perhaps | interpreters like Perl. | | On Pierre's offered solution: I now do recall how exec works and it is | correct that it replaces the current process - although a there will | be some overhead. However, that begs the question why cron ever | supported the SHELL parameter in the first place; if Mr Vixie wanted | everyone to write a wrapper script using his preferred shell. Here is an even simpler solution: specify the shell you want in the crontab itself Like * * * * * cmd /c "some DOS stuff" * * * * * powershell -command "some powershell stuff" * * * * * bash -c "some bash stuff" No need to specify SHELL, no wrapper shell, mix and match interpreters, maximal flexibility. And the top shell (sh) is smart and will exec the subshell because it recognizes that's the only thing it has to do. To verify that, try strace sh -c "cmd /C sh -c \"/bin/echo hello\"" | grep -i 'spawn\|fork' Pierre -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/