即使在取得 .bashrc 後,crontab 也找不到環境變量

即使在取得 .bashrc 後,crontab 也找不到環境變量
crontab -e
00 00 * * * /home/username/run.sh >> /home/username/log 2>&1

run.sh 內部:

source /home/username/.bashrc
java

當 crontab 作業被觸發時,我在日誌中收到以下錯誤:

/home/username/run.sh: 1: /home/username/run.sh: java: not found

但是,java路徑是在/home/username/.bashrc中設定的,所以我期望採購應該設定java路徑:

我知道我可以透過以下方式修復它:

export PATH="/usr/local/jdk1.8.0_231/bin:$PATH"
java

但為什麼採購 .bashrc 還不夠呢? crontab 到底有哪些環境變數以及 source .bashrc 到底做了什麼(以便 crontab 不考慮它)?

謝謝。

答案1

我有一些猜測,但可能是錯的:

  • 當我們打開 bash shell 時,我們啟動一個 bash 進程,並且在運行 .bashrc 時,它只會更改該 bash 進程的環境
  • crontab有自己的進程,與開啟的bash進程無關
  • 當取得.bashrc時,它只對bash進程進行更改(儘管運行crontab時沒有任何更改??),因此crontab仍然沒有對環境變數進行任何更改

因此,取得 .bashrc 對 crontab 沒有幫助。

相關內容