Shell
如何使用現有環境變數執行 cron 命令?
如何使用現有環境變數執行 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 源之後的任何命令都將擁有您的環境,就好像您已登錄一樣。