shell calling another shell program fails when run by crontabWhich shell interpreter runs a script with no shebang?What is the difference in these two bash environments?Crontab does not run?SASL authentication fails when called from crontabWhy does my cronjob not execute my shell-script?Run shell script from crontab after server stop/start/restartTask not run by crontabbash script locked at if statement when executedMy backup_system.sh file didn't run under crontabProgram will not run on CRONTABRun Makefile through CrontabMakefile fails when trying to run a C program

Is it appropriate to ask a former professor to order a library book for me through ILL?

How to distinguish easily different soldier of ww2?

Should we avoid writing fiction about historical events without extensive research?

How to recover against Snake as a heavyweight character?

What does *dead* mean in *What do you mean, dead?*?

What is the best index strategy or query SELECT when performing a search/lookup BETWEEN IP address (IPv4 and IPv6) ranges?

A running toilet that stops itself

I am the light that shines in the dark

I am the person who abides by rules but breaks the rules . Who am I

Does the US political system, in principle, allow for a no-party system?

How does learning spells work when leveling a multiclass character?

Precision notation for voltmeters

What is the orbit and expected lifetime of Crew Dragon trunk?

Why would /etc/passwd be used every time someone executes `ls -l` command?

Will the concrete slab in a partially heated shed conduct a lot of heat to the unconditioned area?

Does an unused member variable take up memory?

Why do phishing e-mails use faked e-mail addresses instead of the real one?

Professor forcing me to attend a conference, I can't afford even with 50% funding

Can I negotiate a patent idea for a raise, under French law?

How can I have x-axis ticks that show ticks scaled in powers of ten?

Can Witch Sight see through Mirror Image?

Insult for someone who "doesn't know anything"

Create chunks from an array

Why does this boat have a landing pad? (SpaceX's GO Searcher) Any plans for propulsive capsule landings?



shell calling another shell program fails when run by crontab


Which shell interpreter runs a script with no shebang?What is the difference in these two bash environments?Crontab does not run?SASL authentication fails when called from crontabWhy does my cronjob not execute my shell-script?Run shell script from crontab after server stop/start/restartTask not run by crontabbash script locked at if statement when executedMy backup_system.sh file didn't run under crontabProgram will not run on CRONTABRun Makefile through CrontabMakefile fails when trying to run a C program













0















I have scheduled to run the run.sh program like this:



16 09 07 * * root /opt/db_maintain/run.sh > /opt/db_maintain/temp-log


and here is the run.sh:



#/bin/bash
#********* Saman *********
TM=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
source $TARGET "$TM"


I have also granted the execute permission to the following files:
run.sh
main.sh



When I run the program manually, it redirects from run.sh to main.sh with no problems. However,
after scheduling it, crontab runs successfully as I checked it with putting some echo statements in run.sh, but I have no idea why run.sh cannot redirect to main.sh, even when I give main.sh execute privileges.



Do you have any idea?



Update: I found out the problem, but I do not know why it behaves like this. In run.sh I was writing #!/bin/bash, but in main.sh, I was writing #!/usr/bin/env bash
after I changed #!/bin/bash in run.sh to #!/usr/bin/env bash, it started working. why is this happening? what is the difference between them?










share|improve this question
























  • You can see this answer.

    – taliezin
    Apr 7 '15 at 6:10






  • 1





    This does not make any sense.  If #!/bin/bash worked when you ran run.sh manually, then it should work just fine under cron.

    – Scott
    Apr 7 '15 at 6:57











  • changing relative paths to absolute solved the problem. but, they should both act the same as all files are residing in the same directory. do you have any idea?

    – Saman
    Apr 8 '15 at 7:49















0















I have scheduled to run the run.sh program like this:



16 09 07 * * root /opt/db_maintain/run.sh > /opt/db_maintain/temp-log


and here is the run.sh:



#/bin/bash
#********* Saman *********
TM=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
source $TARGET "$TM"


I have also granted the execute permission to the following files:
run.sh
main.sh



When I run the program manually, it redirects from run.sh to main.sh with no problems. However,
after scheduling it, crontab runs successfully as I checked it with putting some echo statements in run.sh, but I have no idea why run.sh cannot redirect to main.sh, even when I give main.sh execute privileges.



Do you have any idea?



Update: I found out the problem, but I do not know why it behaves like this. In run.sh I was writing #!/bin/bash, but in main.sh, I was writing #!/usr/bin/env bash
after I changed #!/bin/bash in run.sh to #!/usr/bin/env bash, it started working. why is this happening? what is the difference between them?










share|improve this question
























  • You can see this answer.

    – taliezin
    Apr 7 '15 at 6:10






  • 1





    This does not make any sense.  If #!/bin/bash worked when you ran run.sh manually, then it should work just fine under cron.

    – Scott
    Apr 7 '15 at 6:57











  • changing relative paths to absolute solved the problem. but, they should both act the same as all files are residing in the same directory. do you have any idea?

    – Saman
    Apr 8 '15 at 7:49













0












0








0








I have scheduled to run the run.sh program like this:



16 09 07 * * root /opt/db_maintain/run.sh > /opt/db_maintain/temp-log


and here is the run.sh:



#/bin/bash
#********* Saman *********
TM=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
source $TARGET "$TM"


I have also granted the execute permission to the following files:
run.sh
main.sh



When I run the program manually, it redirects from run.sh to main.sh with no problems. However,
after scheduling it, crontab runs successfully as I checked it with putting some echo statements in run.sh, but I have no idea why run.sh cannot redirect to main.sh, even when I give main.sh execute privileges.



Do you have any idea?



Update: I found out the problem, but I do not know why it behaves like this. In run.sh I was writing #!/bin/bash, but in main.sh, I was writing #!/usr/bin/env bash
after I changed #!/bin/bash in run.sh to #!/usr/bin/env bash, it started working. why is this happening? what is the difference between them?










share|improve this question
















I have scheduled to run the run.sh program like this:



16 09 07 * * root /opt/db_maintain/run.sh > /opt/db_maintain/temp-log


and here is the run.sh:



#/bin/bash
#********* Saman *********
TM=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
source $TARGET "$TM"


I have also granted the execute permission to the following files:
run.sh
main.sh



When I run the program manually, it redirects from run.sh to main.sh with no problems. However,
after scheduling it, crontab runs successfully as I checked it with putting some echo statements in run.sh, but I have no idea why run.sh cannot redirect to main.sh, even when I give main.sh execute privileges.



Do you have any idea?



Update: I found out the problem, but I do not know why it behaves like this. In run.sh I was writing #!/bin/bash, but in main.sh, I was writing #!/usr/bin/env bash
after I changed #!/bin/bash in run.sh to #!/usr/bin/env bash, it started working. why is this happening? what is the difference between them?







debian shell-script cron






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 4 hours ago









Rui F Ribeiro

41.2k1481140




41.2k1481140










asked Apr 7 '15 at 4:52









SamanSaman

1361312




1361312












  • You can see this answer.

    – taliezin
    Apr 7 '15 at 6:10






  • 1





    This does not make any sense.  If #!/bin/bash worked when you ran run.sh manually, then it should work just fine under cron.

    – Scott
    Apr 7 '15 at 6:57











  • changing relative paths to absolute solved the problem. but, they should both act the same as all files are residing in the same directory. do you have any idea?

    – Saman
    Apr 8 '15 at 7:49

















  • You can see this answer.

    – taliezin
    Apr 7 '15 at 6:10






  • 1





    This does not make any sense.  If #!/bin/bash worked when you ran run.sh manually, then it should work just fine under cron.

    – Scott
    Apr 7 '15 at 6:57











  • changing relative paths to absolute solved the problem. but, they should both act the same as all files are residing in the same directory. do you have any idea?

    – Saman
    Apr 8 '15 at 7:49
















You can see this answer.

– taliezin
Apr 7 '15 at 6:10





You can see this answer.

– taliezin
Apr 7 '15 at 6:10




1




1





This does not make any sense.  If #!/bin/bash worked when you ran run.sh manually, then it should work just fine under cron.

– Scott
Apr 7 '15 at 6:57





This does not make any sense.  If #!/bin/bash worked when you ran run.sh manually, then it should work just fine under cron.

– Scott
Apr 7 '15 at 6:57













changing relative paths to absolute solved the problem. but, they should both act the same as all files are residing in the same directory. do you have any idea?

– Saman
Apr 8 '15 at 7:49





changing relative paths to absolute solved the problem. but, they should both act the same as all files are residing in the same directory. do you have any idea?

– Saman
Apr 8 '15 at 7:49










1 Answer
1






active

oldest

votes


















1














The #!-line in main.sh does not matter at all since you're using source to run it in the same execution environment as run.sh.



Your run.sh, as presented in the question, does not have a #!-line at all. It has a comment reading



#/bin/bash


as its first line.



This ought to mean that it will be executed by /bin/sh. The /bin/sh shell does not have a source command and you should therefore get some kind of "command not found" error from the script when cron runs it (check root's email).



Related:



  • Which shell interpreter runs a script with no shebang?





share|improve this answer






















    Your Answer








    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "106"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f194739%2fshell-calling-another-shell-program-fails-when-run-by-crontab%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    The #!-line in main.sh does not matter at all since you're using source to run it in the same execution environment as run.sh.



    Your run.sh, as presented in the question, does not have a #!-line at all. It has a comment reading



    #/bin/bash


    as its first line.



    This ought to mean that it will be executed by /bin/sh. The /bin/sh shell does not have a source command and you should therefore get some kind of "command not found" error from the script when cron runs it (check root's email).



    Related:



    • Which shell interpreter runs a script with no shebang?





    share|improve this answer



























      1














      The #!-line in main.sh does not matter at all since you're using source to run it in the same execution environment as run.sh.



      Your run.sh, as presented in the question, does not have a #!-line at all. It has a comment reading



      #/bin/bash


      as its first line.



      This ought to mean that it will be executed by /bin/sh. The /bin/sh shell does not have a source command and you should therefore get some kind of "command not found" error from the script when cron runs it (check root's email).



      Related:



      • Which shell interpreter runs a script with no shebang?





      share|improve this answer

























        1












        1








        1







        The #!-line in main.sh does not matter at all since you're using source to run it in the same execution environment as run.sh.



        Your run.sh, as presented in the question, does not have a #!-line at all. It has a comment reading



        #/bin/bash


        as its first line.



        This ought to mean that it will be executed by /bin/sh. The /bin/sh shell does not have a source command and you should therefore get some kind of "command not found" error from the script when cron runs it (check root's email).



        Related:



        • Which shell interpreter runs a script with no shebang?





        share|improve this answer













        The #!-line in main.sh does not matter at all since you're using source to run it in the same execution environment as run.sh.



        Your run.sh, as presented in the question, does not have a #!-line at all. It has a comment reading



        #/bin/bash


        as its first line.



        This ought to mean that it will be executed by /bin/sh. The /bin/sh shell does not have a source command and you should therefore get some kind of "command not found" error from the script when cron runs it (check root's email).



        Related:



        • Which shell interpreter runs a script with no shebang?






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jul 18 '18 at 21:08









        KusalanandaKusalananda

        134k17255418




        134k17255418



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f194739%2fshell-calling-another-shell-program-fails-when-run-by-crontab%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Word for a person who has no opinion about whether god existsWord for having a definite opinion while simultaneously withholding judgment?What's the opposite of “newcomer? Is ”veteran" OK?What do you call an “atheist” who might believe in an afterlife?What's a word for someone who wants to voice opinions but not have them challenged?Word for someone who dismisses contrary opinions as irrational?Somone who thinks they are overly special/out of the ordinaryIs there a word, phrase or idiom for “a person who is incapable of thinking about the future”?The belief that a god is human-likeA word for a non-famous person/thing you have heard a lot aboutAdjective for a person who enjoys taking care of their appearance

            What was this official D&D 3.5e Lovecraft-flavored rulebook?What was this set of RPG tools called?As a first-time DM should I let my players play complex character classes and roles?Nymph's Kiss and the RelationshipWhat was the name of this Cleric Prestige Class that shapes metal with its bare hands?Are the 3.5e Dragonlance books third party or official works?What's up with the domain Vile Darkness?What was this 80s book about RPGs?What was the name of this Werewolf band?What book had Rituals to “upgrade” animal companions to keep them viable at higher levels?What was this RPG that had rules for player-owned businesses?

            2017 IndyCar Series Contents Series news Teams and drivers Schedule Season summary Footnotes References External links Navigation menu"INDYCAR: Initial 2018 bodywork concepts unveiled"the original"IndyCar confirms switch to Performance Friction brakes in 2017""AJ Foyt Racing will switch to Chevy"the original"Carlos Munoz, Conor Daly will drive for AJ Foyt Racing""Zach Veach's Indy 500 Debut Confirmed with Foyt""No mass exodus from Honda after Ganassi switch""Ex-F1 driver Sato joins Andretti Autosport for 2017 IndyCar season""IndyCar's Ryan Hunter-Reay, sponsor DHL paired through 2020""hhgregg and Andretti Autosport announce partnership for key races in 2016""INDYCAR: Rossi re-signs with Andretti"the original"McLaren Formula 1 - Fernando Alonso to race at Indy 500 with McLaren, Honda and Andretti Autosport""Shank will finally take part in Indy 500 with Harvey, Andretti | MotorSportsTalk""Andretti adds Jack Harvey to Indy 500 field""Ganassi switches to Honda power for 2017""INDYCAR: Chilton returns to Ganassi"the original"IndyCar silly season: Who's going where in 2017?""INDYCAR: Kanaan, NTT Data return to Ganassi"the original"Kimball to remain at Ganassi for 2017""Coyne confirms Bourdais for 2017 IndyCar season""Davison to sub for Bourdais in Indy 500"the original"Gutierrez confirmed for Detroit IndyCar debut""Gutierrez returns with Coyne for rest of 2017 season""Vautier to drive for Coyne at Texas"the original"INDYCAR: Coyne confirms Jones for 2017"the original"Pippa Mann returns to Coyne for Indy 500""Karam, Dreyer & Reinbold teaming up again for Indianapolis 500""Pigot to return to Ed Carpenter Racing""Hildebrand confirmed as full-time Ed Carpenter driver""Veach to replace injured Hildebrand at Barber"the originalNew Team Harding Racing Enters Chaves for 101st Indianapolis 500"Juncos Racing Announces Entry in 101st Running of the Indianapolis 500 :: Juncos Racing""Juncos confirms Pigot for Indy 500""Saavedra confirmed in Juncos' second 500 entry"the original"Lazier confirms Indy 500 run after son's USF2000 debut"the original"Claman DeMelo to race for RLLR at Sonoma"the original"Rahal signs Servia and ace engineer for 2017""IndyCar: Aleshin returns with Schmidt"the original"Aleshin replaced by Saavedra for Toronto""Jack Harvey will pilot SPM No. 7 car at Watkins Glen, Sonoma""Jay Howard confirmed in Tony Stewart's supported SPM Indy entry""INDYCAR: Newgarden to wave the flag at Penske"the original"Pagenaud opts for No. 1 in 2017"the original"Penske confirms Newgarden for 2017""Montoya to stay with Team Penske in 2017""Target leaving IndyCar after 27 seasons with Chip Ganassi""Cavin: IndyCar could see complete driver/team shakeup in 2017""End of the road for KV Racing?""KV Racing confirms closure, equipment sold to Juncos""Juncos confirms IndyCar Series entry"the original"Juncos readies IndyCar program, aims for '17 500"the original"Harding Racing to add Texas, Pocono to schedule"the original"Sato signs with Andretti Autosport for 2017""INDYCAR: Aleshin in Doubt at SPM"the original"Long Beach notebook: JR Hildebrand breaks hand""Hildebrand cleared to return at Phoenix"the original"Bourdais to undergo surgery on multiple fractures""Aleshin loses Schmidt Peterson IndyCar ride""Saavedra in at SPM for Pocono, Gateway"the original"Bourdais to make return at Gateway"the original"The IndyCar Grand Prix no longer is sponsored by Angie's List""2017 IndyCar Series rulebook""2017 Verizon IndyCar Series Official Rulebook"Official websiteeeeee