工作需要写一个批量执行的shell脚本,其中使用了source命令初始化Android编译环境加载特定的配置文件。将source命令写到脚本中,发现整个命令都没有变色,这是什么情况,心中打了个大问号,不过还是忽略了,接着码脚本,脚本完成后,兴致勃勃的执行了一下,发现source这行执行失败(command not found、source: not found ),导致后面用到的Android编译环境也失败了,大篇的失败,心塞塞的
原因:使用下面的命令查看下sh的详情
ls -l `which sh`
结果如图所示,/bin/sh默认指向了dash,so脚本默认是以dash模式执行的
解决问题:将系统默认的执行方式修改为bash,执行下面命令
dpkg-reconfigure dash
执行结果,提示是否设置dash设置为系统默认shell模式,选择no,将bash设置为默认
这是完成后,重新查看sh详情,见下图
/bin/sh指向了bash。下面重新执行下shell脚本,如果还是提示command not found,只能重启下机器了