施加变量crontab路径不起作用

问题描述 投票:0回答:2

SHELL=/usr/bin/bash HOME=/mycluster/home/mygroup/myuser PATH=$HOME/miniconda3/envs/py310simple/bin:$HOME/miniconda3/envs/py310simple/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/

我实际上有很多物品从我的路上开始,从我的路上开始,这被缩短了可读性。
现在,在cronjob中,似乎没有扩展

$HOME
变量,导致内部的事物实际上没有在路径上。
为什么?我该如何解决这个问题?我不想为我想走上的每个目录手动扩展(并维护)

$HOME/miniconda3/envs/py310simple/bin

a
HOME

crontab

的指令列表,它不是shell脚本(

cron
或其他shell的指令列表),所以实际上我很惊讶地在

为什么包含一个。”。 /. profile“在unix的crontab条目中?
shell path cron cron-task
2个回答
2
投票
bash

bar
我要么:

创建了一个名为shell脚本
cron设置这些变量,然后调用foo

使用

bar
直接在
foo
中,所以我从

bar
    中调用
  1. cron
    ,将shell变量设置在
    bash -c 'SHELL=...; HOME=...; PATH=...; bar'
    壳中,然后从同一shell调用
    crontab
    
    crontab文件不是外壳脚本,它是一个crontab文件。
    
    能够在crontab文件中设置环境变量的能力,因为它看起来有点像壳语法,但不是真正的shell,因此$ home并没有扩展,其他shell shell替换也不是。 
  2. 时间规范传递给外壳之后的部分。
  3. 您的选择是....
    
    
    在crontab
    中占用自己
    bash
    
    
    在执行行上输入shell变量:
    cron

0
投票

bash

bar

在单独的源文件中输入变量:

  1. PATH=/home/miniconda3/envs/py310simple/bin:/home/miniconda3/envs/py310simple/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ 0 10 * * * my-command with my-args here
0 10 * * * PATH=$HOME/miniconda3/envs/py310simple/bin:$HOME/miniconda3/envs/py310simple/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ my-command with my-args here
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.