由于需要执行一些定时任务,所以在linux的crontab定时器里面加了个shell脚本,让它定时执行一些数据库任务。单独测试这个sh文件的时候,完全正常,后来发现使用crontab中的shell却没办法正确执行。奇怪的是,与文件相关的操作都执行成功了,就sqlplus没有执行成功。
后来,在shell脚本的第一行加上:. /root/.bashrc后,sqlplus就执行成功了。
原因在于:crontab中执行shell的时候,虽然是某个用户的权限,但是却没有读入这个用户的环境变量。由于sqplus必须要定义好环境变量后才能正确执行,所以在crontab中不调用.bashrc就没办法正确使用sqlplus了。
后来,在shell脚本的第一行加上:. /root/.bashrc后,sqlplus就执行成功了。
原因在于:crontab中执行shell的时候,虽然是某个用户的权限,但是却没有读入这个用户的环境变量。由于sqplus必须要定义好环境变量后才能正确执行,所以在crontab中不调用.bashrc就没办法正确使用sqlplus了。