質問: 既存の環境変数を使用してcronコマンドを実行するにはどうすればよいですか? 既存の環境変数を使用してcronコマンドを実行するにはどうすればよいですか?シェルプロンプトにいる場合は、echo $oracle_homeと入力してパスを取得できます。これは、~/.profileで設定される環境変数の1つです。ただし、~/.profileがcronスクリプトから読み込まれないため、$oracle_home変数が設定されていないため、スクリプトが失敗します。 この質問 で、著者はcronの変数を設定する~/.cronfileプロファイルを作成することについて言及し、次に彼はすべてのcronコマンドを~/cronディレクトリに保持するスクリプトにロードするための回避策を実行します。 ~/.cronfileのようなファイルは良い考えのように聞こえますが、残りの答えは少し扱いにくいようで、誰かが同じ結果を得る簡単な方法を教えてくれることを望んでいました。スクリプトの最初にsource ~/.profileのようなものを追加できると思いますが、それは冗長であるように思えます。では、cronスクリプトでインタラクティブシェルプロファイルから変数をロードするにはどうすればよいですか?
回答: はい、「よく知られた回避策」を使用できます(そのうちいくつかはリストされています)。これは、誰もがそれがくだらないことであることを知っていると言う別の言い方ですが、一部の人々は、これを「セキュリティ機能」と呼ぶでしょう。無駄な時間は無駄ではありませんでした。これは、qwertyキーボードに相当するcronです。元々の理由はパフォーマンスのためだったのではないかと思います。1分間に1回実行されるスクリプトは、rcスクリプトを読み取るための時間を費やさないからです。また、元々cronは実際には構成可能ではなかったため、デフォルトが本当に唯一のオプションでした。ユーザーが愚かなシェル体操を行わなくても、cronがインタラクティブシェルの環境を引き継ぐだけの簡単な構成や方法がないことによるセキュリティの追加はありません。最近のマシンでは、毎分大量のジョブを実行しない限り、一般に知覚できるパフォーマンスの向上はありません。unix文化は失敗します。私の愚見で。 :-)