|Summary:||Commands executed using user's own shell (but manpage disagrees)|
|Product:||[Retired] Red Hat Linux||Reporter:||Ed Avis <ed>|
|Component:||at||Assignee:||Jens Petersen <petersen>|
|Status:||CLOSED RAWHIDE||QA Contact:||Mike McLean <mikem>|
|Fixed In Version:||Doc Type:||Bug Fix|
|Doc Text:||Story Points:||---|
|Last Closed:||2003-06-17 07:19:06 UTC||Type:||---|
|oVirt Team:||---||RHEL 7.3 requirements from Atomic Host:|
|Bug Depends On:|
|Bug Blocks:||82857, 91233|
Description Ed Avis 2000-12-13 11:55:45 UTC
The manual page at(1) says: >at and batch read commands from standard input or a specified file >which are to be executed at a later time, using /bin/sh. But this isn't what happens. If the user's shell is /bin/tcsh, for example, then commands are executed using that shell instead. For example, change your shell to tcsh and run: % echo 'hello, this is $SHELL' | at now The output from the job will say: Hello, this is /bin/tcsh Hence the manual page is wrong. I'm not sure whether the implementation or the manpage needs to change - I would favour always using /bin/sh.
Comment 1 Ed Avis 2000-12-13 12:07:08 UTC
Sorry, that example is broken. You need an extra 'echo' in there... I reproduced this bug myself by typing stuff directly into at's stdin.
Comment 2 Philip Rowlands 2000-12-13 12:14:26 UTC
Working example: % echo $SHELL /bin/tcsh % echo 'echo "Hello, this is $SHELL"' | at now warning: commands will be executed using /bin/sh job 1 at 2000-12-13 12:14 % mail [snip] Subject: Output from your job 1 Hello, this is /bin/tcsh
Comment 3 Bill Nottingham 2000-12-13 16:53:00 UTC
Rather than change the behavior, I think it's best to simply change the documentation to match the existing behavior. This has been done in at-3.1.8-13.
Comment 4 Ed Avis 2000-12-13 17:34:05 UTC
Did you also remove the 'warning: commands will be executed using /bin/sh' message? The fact that at prints this message suggests that the original author's intention was for /bin/sh to be used. But as long as the manual page, the warning message and the implementation all agree, it doesn't much matter which shell is used.
Comment 5 Jens Petersen 2003-06-02 08:03:38 UTC
ICBW but it looks to me that this change was erroneous. Changing shell doesn't automatically change the value of SHELL.... % printenv SHELL /bin/zsh % bash $ printenv SHELL /bin/zsh
Comment 6 Ed Avis 2003-06-02 18:20:07 UTC
When originally submitting the bug I picked 'echo $SHELL' as an example of a command to show the current shell; perhaps the example was wrong because $SHELL is not a reliable indicator, but nonetheless the bug report described the behaviour when it was submitted. I'm sure that 'at' jobs were being executed using root's shell, not /bin/sh. This was on 6.2 mind you, perhaps it has changed since then (in which case the documentation might need to be changed back again!).
Comment 7 Jens Petersen 2003-06-07 19:44:59 UTC
Ok, well I reverted the warning patch in at-8.1.3-41, but if this has ever worked I would really like to know in which version.