crontabはbash.bashrc変数を取得しません。

crontabはbash.bashrc変数を取得しません。

Ubuntu 16.04 Bash 4.3.46(1) の最後で、/etc/bash.bashrc次の変数を宣言しました。

drt="/var/www/html"

ファイルが見つかりました(source /etc/bash.bashrc

crontab -eテストのために実行して追加しました* * * * * touch /var/www/html/myFile.sh。これはうまくいきますが、* * * * * touch ${drt}/myFile.shうまくいきません。

で宣言した変数はbash.bashrcグローバル変数ですが、なぜ処理されないのですかcrontab

アップデート1

原則として、重複を避けるためにストリームを(または)drt="/var/www/html"にコピーしたくありません。crontabcron.d

アップデート2

フォローする今回の会議正解で示された答えが私の問題を解決していないようです。

これ2番目の答え少し不明です。なぜこの条件文を(一部?)bashrcファイルに入れるのですか?

bash.bashrcSHELL=/bin/bashまた、(最初に追加された)に関連する3番目のソリューションを試してcrontabファイルを保存してソースをインポートしましたが、bash.bashrcテストでは何も変更されませんでした* * * * * touch ~/myfiile

したがって、私はその質問を見直すか、少なくともそれに対する答えが明確になるように頼みます。

ベストアンサー1

で定義された変数は、*.bashrcシェルで実行されているプログラムから読み取ることができ、シェルでのみ排他的に処理されるという点でグローバル変数です。プログラムがこれらの環境変数を読み取るかどうか、およびそれを解釈する方法は完全に設計に依存し、プログラムが環境変数を処理する方法の要件はありません。

つまり、croncrontabの解釈方法はcronプログラム自体によって決まります。 「グローバル」環境変数を読み取るのではなく、独自の構文を使用して「環境変数」を定義することにします。これは意図的に設計されています。${drt}で使用できない理由を理解できる場合は、crontabが期待どおりに機能しないCMakeLists.txt理由も理解できるはずです。${drt}

もちろん、次の行を追加できます。予約されたことあなたがしたい場合。

drt="/var/www/html"

おすすめ記事