<div dir="ltr"><div>Hi All</div><div><br></div><div>I don't know if this is the problem, but anyway ...<br></div><div>AFAIK, cron doesn't source the initialization files in your home directory (.bashrc, .bash_profile, etc).</div><div>You can export the specific environment variables you need explicitly in the beginning of the script that cron runs.</div><div>Alternatively, you can source your initialization files in your script or in your crontab, <br></div><div>but that may carry more environment variables than you really want in the cron job to know about.</div><div><br></div><div>See for example this:</div><div><a href="https://unix.stackexchange.com/questions/67940/cron-ignores-variables-defined-in-bashrc-and-bash-profile">https://unix.stackexchange.com/questions/67940/cron-ignores-variables-defined-in-bashrc-and-bash-profile</a></div><div><br></div><div>I hope this helps,</div><div>Gus Correa<br> </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 3, 2021 at 12:21 PM Rick Brownrigg via ncl-talk <<a href="mailto:ncl-talk@mailman.ucar.edu">ncl-talk@mailman.ucar.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>HI Sam,</div><div><br></div><div>I don't fully understand exactly the issue, as I do not have a testing environment to replicate what you are seeing. However, I suspect the core of the issue is that when the cron job is run by the system, it's not *your* .bashrc file that is used, rather one elsewhere on the system (I don't know offhand where, or if any, is used).</div><div><br></div><div>All that "conda init" does is append these lines to the .bashrc in your homedir (it appended to .bash_profile on my Mac):</div><div><br></div><div># >>> conda initialize >>><br># !! Contents within this block are managed by 'conda init' !!<br><span style="color:rgb(255,0,0)">__conda_setup="$('/Users/brownrig/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"</span><br>if [ $? -eq 0 ]; then<br> <span style="color:rgb(255,0,0)">eval "$__conda_setup"</span><br>else<br> if [ -f "/Users/brownrig/miniconda3/etc/profile.d/conda.sh" ]; then<br> . "/Users/brownrig/miniconda3/etc/profile.d/conda.sh"<br> else<br> export PATH="/Users/brownrig/miniconda3/bin:$PATH"<br> fi<br>fi<br>unset __conda_setup<br># <<< conda initialize <<<</div><div><br></div><div>Perhaps placing this into your bash script before the call to "conda activate". Minimally the lines in red are enough to set up the environment. There may be a better way to do this. Perhaps invoking bash from cron with "--rcfile /path/to/your/.bashrc"</div><div><br></div><div>Hope that helps...</div><div>Rick</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 31, 2020 at 12:31 PM Sam McClatchie via ncl-talk <<a href="mailto:ncl-talk@mailman.ucar.edu" target="_blank">ncl-talk@mailman.ucar.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p><font face="TeX Gyre Adventor">Colleagues</font></p>
<p><font face="TeX Gyre Adventor">[I am using Ubuntu 18.04]<br>
</font></p>
<p><font face="TeX Gyre Adventor">I want to call an NCL script from
a bash shell script. Normally I would just activate the
environment from the command line:</font></p>
<p><font face="TeX Gyre Adventor">(base) smcc@Jaguar:~$ conda
activate ncl_stable<br>
(ncl_stable) smcc@Jaguar:~$ <br>
</font></p>
<p><font face="TeX Gyre Adventor">and then run the shell script in
the terminal:</font></p>
<p><font face="TeX Gyre Adventor">./download_latest_GHRSST_data_from_ERDdap.sh</font></p>
<p><font face="TeX Gyre Adventor">This works fine.<br>
</font></p>
<p><font face="TeX Gyre Adventor">The problem is that I want to
automate by using a shell script called in a cron job. </font><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">I want
to incorporate this NCL script in a cron job containing other
calls to R, so being able to activate the NCL environment from
within a shell script would be helpful. I suspect others have
done something similar, so I'd appreciate your guidance.</font></font></p>
<p><font face="TeX Gyre Adventor">### details follow
#########################<br>
</font></p>
<p><font face="TeX Gyre Adventor">When I try to activate the NCL
environment from a bash shell script using:</font></p>
<p><font face="TeX Gyre Adventor">/home/smcc/anaconda3/bin/conda
activate ncl_stable</font></p>
<p><font face="TeX Gyre Adventor">in the shell script, the following
error is returned: <br>
</font></p>
<p><font face="TeX Gyre Adventor">(base)
smcc@Jaguar:/mnt/data/dynamic_data/projects/projects2020/recreational_fishing_GHRSST/shell$
./download_latest_GHRSST_data_from_ERDdap.sh <br>
<br>
Error message start ---------------------------</font></p>
<p><font face="TeX Gyre Adventor">CommandNotFoundError: Your shell
has not been properly configured to use 'conda activate'.<br>
To initialize your shell, run<br>
<br>
$ conda init <SHELL_NAME><br>
<br>
Currently supported shells are:<br>
- bash<br>
- fish<br>
- tcsh<br>
- xonsh<br>
- zsh<br>
- powershell<br>
<br>
See 'conda init --help' for more information and options.<br>
<br>
IMPORTANT: You may need to close and restart your shell after
running 'conda init'.<br>
<br>
./download_latest_GHRSST_data_from_ERDdap.sh: line 19: ncl:
command not found<br>
(base)
smcc@Jaguar:/mnt/data/dynamic_data/projects/projects2020/recreational_fishing_GHRSST/shell$
<br>
</font><font face="TeX Gyre Adventor"><font face="TeX Gyre
Adventor">Error message end </font>--------------------------------------------<br>
</font></p>
<p><font face="TeX Gyre Adventor">Running conda init bash before
calling the shell script does not fix the problem. <br>
</font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">(ncl_stable)
smcc@Jaguar:/mnt/data/dynamic_data/projects/projects2020/recreational_fishing_GHRSST/shell$
conda init bash<br>
no change /home/smcc/anaconda3/condabin/conda<br>
no change /home/smcc/anaconda3/bin/conda<br>
no change /home/smcc/anaconda3/bin/conda-env<br>
no change /home/smcc/anaconda3/bin/activate<br>
no change /home/smcc/anaconda3/bin/deactivate<br>
no change /home/smcc/anaconda3/etc/profile.d/conda.sh<br>
no change /home/smcc/anaconda3/etc/fish/conf.d/conda.fish<br>
no change /home/smcc/anaconda3/shell/condabin/Conda.psm1<br>
no change
/home/smcc/anaconda3/shell/condabin/conda-hook.ps1<br>
no change
/home/smcc/anaconda3/lib/python3.7/site-packages/xontrib/conda.xsh<br>
no change /home/smcc/anaconda3/etc/profile.d/conda.csh<br>
no change /home/smcc/.bashrc<br>
No action taken.</font></font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">Another
recommendation was to prepend a line to the bash script:</font></font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">eval
"$(command conda 'shell.bash' 'hook' 2> /dev/null)"</font></font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">but
this doesn't seem to work when I call the shell script from
cron. <br>
</font></font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">My
cron file is just one line calling the shell script to run
interactively:</font></font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">0
12 * * * bash -i
/mnt/data/dynamic_data/projects/projects2020/recreational_fishing_GHRSST/shell/download_latest_GHRSST_data_from_ERDdap.sh</font></font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">and
here is my shell script:</font></font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">start
shell script ------------------------------</font></font></p>
<p><font face="TeX Gyre Adventor"><font face="TeX Gyre Adventor">eval
"$(command conda 'shell.bash' 'hook' 2> /dev/null)"<br>
#!/bin/bash<br>
## download_latest_GHRSST_data_from_ERDdap.sh<br>
# NOTE: for this script to work, call the script in cron
using: <br>
# "bash -i ./download_latest_GHRSST_data_from_ERDdap.sh"<br>
# to run the script in interactive mode so the .bashrc file is
sourced<br>
# Otherwise conda activate will not work<br>
<br>
# Use crontab -e to edit the cron file <br>
# (see
<a href="https://linux4one.com/how-to-set-cron-jobs-on-ubuntu-18-04/" target="_blank">https://linux4one.com/how-to-set-cron-jobs-on-ubuntu-18-04/</a>)<br>
# use cronitor to troubleshoot cron file <br>
# (see
<a href="https://cronitor.io/cron-reference/cron-troubleshooting-guide" target="_blank">https://cronitor.io/cron-reference/cron-troubleshooting-guide</a>).
<br>
# Try $ cronitor select to test run<br>
<br>
########################################<br>
# download the latest GHRSST data from erddap<br>
########################################<br>
# Rscript
"/mnt/data/dynamic_data/projects/projects2020/recreational_fishing_GHRSST/R/download_GHRSST_MUR-JPL-L4-GLOB-v4.1_daily.R"<br>
<br>
########################################<br>
# plot GHRSST data<br>
########################################<br>
# activate the ncl environment<br>
conda activate ncl_stable<br>
<br>
ncl
/mnt/data/dynamic_data/projects/projects2020/recreational_fishing_GHRSST/ncl/plot_daily_GHRSST-MUR-JPL-L4-GLOB-v4_1_around_New_Zealand.ncl<br>
<br>
</font></font><font face="TeX Gyre Adventor"><font face="TeX
Gyre Adventor"><font face="TeX Gyre Adventor"><font face="TeX
Gyre Adventor">end shell script </font></font>-------------------------------<br>
</font></font></p>
<p><font face="TeX Gyre Adventor">Best fishes</font></p>
<p><font face="TeX Gyre Adventor">Sam<br>
</font></p>
<div>-- <br>
Sam McClatchie (fisheries oceanographer)<br>
& Elena Turin (accounting & auditing)<br>
FishOcean Enterprises <span style="text-decoration:underline"><a href="http://www.fishocean.info" target="_blank">www.fishocean.info</a></span><br>
38 Upland Rd, Huia, Auckland 0604, New Zealand<br>
cell: 027 752 8495<br>
<img style="width: 150px; height: 149px;" alt="" src="cid:176c9378d8eb74f45fb1"><br>
<br>
"The time has come", the tui said,<br>
"to talk of many things:<br>
Of songs - and ferns - and flowering flax,<br>
of pukekos and dreams ..."<br>
<br>
(not Lewis Carroll) </div>
</div>
_______________________________________________<br>
ncl-talk mailing list<br>
<a href="mailto:ncl-talk@mailman.ucar.edu" target="_blank">ncl-talk@mailman.ucar.edu</a><br>
List instructions, subscriber options, unsubscribe:<br>
<a href="https://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank">https://mailman.ucar.edu/mailman/listinfo/ncl-talk</a></blockquote></div>
_______________________________________________<br>
ncl-talk mailing list<br>
<a href="mailto:ncl-talk@mailman.ucar.edu" target="_blank">ncl-talk@mailman.ucar.edu</a><br>
List instructions, subscriber options, unsubscribe:<br>
<a href="https://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank">https://mailman.ucar.edu/mailman/listinfo/ncl-talk</a></blockquote></div>