cronは、「.bashrc」および「.bash_profile」で定義されている変数を無視します。

cronは、「.bashrc」および「.bash_profile」で定義されている変数を無視します。

/etc/crontabファイルに「SHELL」変数を定義しました。

[martin@martin ~]$ grep SHELL /etc/crontab 
SHELL=/usr/local/bin/bash
[martin@martin ~]$ file /usr/local/bin/bash
/usr/local/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), for FreeBSD 8.0 (800107), stripped
[martin@martin ~]$ 

さらに、/ etc / crontabファイル内のすべてのスクリプトは「martin」ユーザーとして起動されます。しかし、/home/martin/.bash_profile(ログインシェル用)および/ホーム/マーティン/.bashrc(非ロギングシェルの場合)cronジョブでは無視されますが、SSHを介してシステムにログインしたり、新しいbashセッションを開くときに使用されるいくつかの変数が含まれています。 cronがこれらの変数を無視するのはなぜですか? cronはユーザー「martin」の権限で「/usr/local/bin/bash my-script.sh」を単に実行しませんか?

ベストアンサー1

ジョブを実行しているユーザーのスクリプトの上部またはジョブの先頭から必要なファイルを取得できます。 「source」コマンドが組み込まれています。これらのファイルを編集して変更を読み込む場合でも、同じことが行われます。

* * * * * source /home/user/.bash_profile; <command>

または

#!/bin/bash
source /home/user/.bash_profile

<commands>

おすすめ記事