ubuntu12.04中shell脚本无法使用source的原因及解决方法

来源:互联网 发布:yy频道淘宝刷单平台 编辑:程序博客网 时间:2024/06/06 07:02

现象: shell脚本中source aaa.sh时提示 source: not found


原因: ls -l `which sh` 提示/bin/sh -> dash

这说明是用dash来进行解析的。


改回方法: 

命令行执行:sudo dpkg-reconfigure dash

在界面中选择no

再ls -l `which sh` 提示/bin/sh -> bash


修改成功,source可以用了~


说明:

Dash Shell 是一个Unix Shell,比Bash Shell 小的多,符合POSIX标准。Debian曾经采用/bin/bash的更改/bin/dash,目的使用更少的磁盘空间、提供较少的功能、获取更快的速度。但是后来经过shell脚本测试存在运行问题。因为原先在bash shell 下可以运行的shell script (shell 脚本),会出现一些意想不到的问题,不是100%的兼用。
Ubuntu继承了Debian,所以从Ubuntu 6.10开始默认是Dash Shell。
解决办法:重新配置shell
1. sudo dpkg-reconfigure dash
选择NO,不使用Dash Shell。
2.采用链接指向
ln -s /bin/bash /bin/sh
检查是否正确:ls -l /bin/sh

0 0