Shell

如何使用現有環境變數執行 cron 命令?

  • June 11, 2020

如何使用現有環境變數執行 cron 命令?

如果我在 shell 提示符下,我可以輸入echo $ORACLE_HOME並獲取路徑。這是在我的~/.profile. 但是,似乎~/.profile沒有從 cron 腳本載入,因此我的腳本失敗,因為$ORACLE_HOME未設置變數。

這個問題中,作者提到創建一個~/.cronfile為 cron 設置變數的配置文件,然後他做了一個解決方法,將他的所有 cron 命令載入到他保存在他的~/Cron目錄中的腳本中。像這樣的文件~/.cronfile聽起來是個好主意,但其餘的答案似乎有點麻煩,我希望有人能告訴我一種更簡單的方法來獲得相同的結果。

我想在我的腳本開始時我可以添加類似的東西,source ~/.profile但這似乎是多餘的。

那麼如何讓我的 cron 腳本從我的互動式 shell 配置文件中載入變數呢?

在 crontab 中,在您發出命令之前,添加. $HOME/.profile. 例如:

0 5 * * * . $HOME/.profile; /path/to/command/to/run

Cron對你的外殼一無所知;它是由系統啟動的,所以它有一個最小的環境。如果你想要任何東西,你需要自己帶來。

另一個我覺得更容易的選擇是使用 cron 執行腳本並在腳本中包含環境。

在 crontab -e 文件中:

SHELL=/bin/bash

*/1 * * * * $HOME/cron_job.sh

在 cron_job.sh 文件中:

#!/bin/bash
source $HOME/.bash_profile
some_other_cmd

.bash_profile 源之後的任何命令都將擁有您的環境,就好像您已登錄一樣。

引用自:https://unix.stackexchange.com/questions/27289