/ 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(ログインシェル用)および/home/martin/.bashrc(非ロギングシェル用)には、cronジョブの場合は無視されますが、マシンにログインする場合に使用される変数が含まれていますSSHまたは新しいbashセッションを開きます。cronがこれらの変数を無視するのはなぜですか?cronは、ユーザー「martin」のアクセス許可で「/ usr / local / bin / bash my-script.sh」を実行するだけではありませんか?
.bashrc
は、非対話型シェルでの実行を停止する行があることに注意してください。