我想在一个地方定义环境变量,可以通过不同用户的 crontab 和运行的 bash shell 访问。
我怎样才能在一个地方写入一次以供上述所有用途使用?
到目前为止,我正在 /etc/bashrc 中写入系统范围的 bashrc,并且在 crontabs 中,我再次在 crontab 定义上方写入此内容
答案1
我认为你不能直接在 crontab 中执行此操作。crontab 文件不是 shell 脚本,因此尝试将包含环境变量的脚本导入其中不起作用
. /path/to/envvars
crontab 不会安装它,因为它无效
crontab: installing new crontab
"/tmp/crontab.iZqWJX/crontab":1: bad minute
errors in crontab file, can't install.
您可以尝试在运行我们的作业之前立即获取包含您的环境变量的脚本
* * * * * . /path/to/envars ; /path/to/your/job
我用这个测试过
* * * * * . /home/iain/envvars ; echo $HELLO >/tmp/test.out
envvars 文件包含
HELLO=fred
文件 /tmp/test.out 包含以下内容
fred
所以我猜这有效。source
命令(的同义词.
)是 bash 内置命令,但源不是 posix,因此.
最好使用。
help source
source: source filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read