Linux在执行shell脚本时提示find: command not found,单独执行该命令可以正常执行

执行时提示一下命令
./backup.sh: line 45: date: command not found //对应生成日子中显示日期
./backup.sh: line 47: find: command not found //对应删除备份
#!/bin/bash
#设置日志文件,提前建好log目录
LogFile=/home/oracle/bin/log/`date +"%Y-%m-%d"`.log
echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" >$LogFile
echo "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >$LogFile
echo "start open ftp server at $(date +"%Y-%m-%d %H:%M:%S")" > $LogFile
echo "put ftp end at $(date +"%Y-%m-%d %H:%M:%S")" >$LogFile
#最后上传完毕后再查看本地备份大于7天的自动删除,这样就可以实现本地异地双备份
find /backup/datadmp -type f -mtime +8 -exec rm -f {} \;
exit 0

其中就第一个echo中能正常显示出时间来,其他的都提示date: command not found

出现此问题的原因:linux 执行sh文件里面缺少PATH=$PATH:/sbin,将其添加进即可解决问题。

详细的操作步骤如下:

1、首先,需要打开计算机的桌面,右键单击并选择“打开终端”这一项,如下图所示。

2、其次,完成上述步骤后,将进入如图所示的页面,在命令行上输入“gedit  / etc / profile”,然后按Enter键,如下图所示。

3、接着,完成上述步骤后,会弹出一个对话框,需要在以下行中添加“PATH  = $ PATH:/ sbin”,如下图所示。

4、最后,完成上述步骤后,单击界面左上角的“保存”按钮以完成操作并解决问题,如下图所示。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-14
尝试加一下命令的绝对路径 , 比如 date 换成 /usr/sbin/date
第2个回答  2014-08-21
你添加了指定解析器的说明了吗? #!/bin/sh
写在开头第一行~
最好把代码贴出来看看。追问

#!/bin/bash 说明了这个

追答

因为你其他的date都没有加执行符号 【·】 你看看你的第一个date和后面几个有何区别,就是在date前面一个字符
而且文件内容追加的话需要用 【>>】号。

追问

开始就第一个那是> ,其他的都是>>着,但就第一个可以正常执行,我就把别的也都改成>了,我这命令就是直接复制的呀,实在找不出哪不同,帮帮我看看应该在哪加这个符号啊

本回答被提问者采纳
第3个回答  2014-08-21
查一下PATH环境变量,shell没有获取到。追问

具体怎么操作?

追答

1、你可以写个脚本测试一下
#!/bin/sh
echo $PATH > path.txt
2、你可以检查~/.bash_profile,/etc/profile
3、你可以在自己的脚步增加变量
PATH=$PATH:/usr/bin:/bin

追问

我echo中为什么第一个正确执行了,其他的都不能输出时间呢

追答

把>改成>>,>号会清除之前的记录

第4个回答  2014-08-21
写绝对路径追问

怎么写能具体说下么

追答

/bin/date
/usr/bin/find
之类的有可能不一样
用whereis 或者which 找出绝对路径

追问

找出find的绝对路径么?然后怎么在脚本中写呢

追答

就写绝对路径如:/usr/bin/find

相似回答