crontabは.bashrcをインポートした後でも環境変数を見つけることができません。

crontabは.bashrcをインポートした後でも環境変数を見つけることができません。
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シェルを開くとbashプロセスが起動し、.bashrcを実行するとそのbashプロセスの環境のみが変更されます。
  • crontabにはオープンベースのbashプロセスとは別に独自のプロセスがあります。
  • .bashrcをインポートするときにbashプロセスのみが変更されるため(crontabを実行しても何も変わりませんが??)、crontabはまだ環境変数を変更しません。

したがって、.bashrcを取得することはcrontabには役立ちません。

おすすめ記事