Shell脚本执行时出现declare: not found的解决方法-阿里云开发者社区

开发者社区> 唐玄奘> 正文

Shell脚本执行时出现declare: not found的解决方法

简介:
+关注继续查看
错误现象:
deployer@andy-VirtualBox:~/pds/EB$ sh build.sh
build.sh: 18: build.sh: declare: not found

build.sh: 25: build.sh: declare: not found

build.sh: 32: build.sh: declare: not found

原因分析:
root@andy-VirtualBox:/home/deployer/pds/EB# file /bin/sh
/bin/sh: symbolic link to `dash'
root@andy-VirtualBox:/home/deployer/pds/EB# file /bin/dash
/bin/dash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x5d23ca7cbab4993f295d1089b4860eb32d406fab, stripped
root@andy-VirtualBox:/home/deployer/pds/EB# file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xf199a4a89ac968c2e0e99f2410600b9d7e995187, stripped
root@andy-VirtualBox:/home/deployer/pds/EB# ln -s /bin/bash /bin/sh
ln: failed to create symbolic link `/bin/sh': File exists
root@andy-VirtualBox:/home/deployer/pds/EB# ln -s /bin/bash /bin/sh -f
root@andy-VirtualBox:/home/deployer/pds/EB# file /bin/sh
/bin/sh: symbolic link to `/bin/bash'
重点看红色字体部分,可以看到,初始是/bin/sh是到/bin/dash的链接。修改后为到/bih/bash的链接。
所以,问题出在,我们的脚本是bash的脚本。而用dash去执行。虽然dash和bash都是shell,在执行时还是有差别的。
解决方法:
(1)执行时由sh build.sh变成bash build.sh可以解决此问题。
(2)ln -s /bin/bash /bin/sh -f
(3)sudo dpkg-reconfigure dash 进行配置,道理同(2)
归结来说,为两种方式。以上两种方法都可以实现。

感谢http://blog.sina.com.cn/s/blog_7cb1c50e0100rapz.html博主。


本文转自博客园zhyiwww 的博客,原文链接:http://www.blogjava.net/zhyiwww/,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ffmpeg windows 雪花声解决方法
替换所有文件里的为即可。 我用ffmpeg-0.6.3版测试时,好像mathimf.h文件和其他文件有冲突,需要修改源码。 和qdm2.c文件中的 QDM2Complex *complex;声明相冲突,修改为QDM2Complex *complex1;即可。
647 0
关于FileZilla上传文件后服务器端文件与本地文件大小不一致的解决方法
最近在调试网站时发现,通过ftp上传工具FileZilla上传至服务器端的文件与本地文件大小不一致,虽然没有影响网站的最终显示效果,但仍让我困惑不解。后发现是传输类型的原因,解决方法如下: 中文版FileZilla菜单栏->传输->传输类型->二进制(Binary) 造成大小不一致的原因:ASCII模式和二进制(Binary)模式的区别是回车换行的处理,Binary模式不对数据进行任何处理,ASCII模式将回车换行转换为本机的回车字符,比如:UNIX下是\n,Windows下是\r\n,Mac下是\r。
1483 0
我写了一个脚本,可在“任意”服务器上执行命令!
冰河之前维护着上千台服务器组成的服务器集群,如果每次需要在服务器上执行命令的时候,都要手动登录每台服务器进行操作的话,那也太麻烦了。你想想,如果在上千台服务器的集群中,每台服务器中只需要简单的执行一个相同的命令,那别说执行命令了,就是让你依次手动登录上千台服务器,那也够你受的了。估计依次登录上千台服务器,给你三天时间你可能都登不完,那怎么办呢?有没有什么好的方法来解决这个问题呢?
20 0
IE浏览器下ajax缓存导致数据不更新的解决方法
摘自:http://www.iefans.net/ie-ajax-json-shuju-huancun/ 最近做设计的时候遇到一个小问题,当你用jquery的getjson函数从后台获取数据的时候,IE浏览器会自动设置缓存,如果此时你对数据进行修改的时候刷新页面,IE并不会在页面显示你修改后的数据,因为你刷新的时候IE浏览器会查找缓存并显示你修改前的数据,最后在网上查了些资料终于解决了IE浏览器下的问题。
1032 0
系统稳定性——NoSuchMethodError 常见原因及解决方法
> 作者:涯海 > 创作日期:2019-08-06 > 专栏地址:[【稳定大于一切】](https://github.com/StabilityMan/StabilityGuide) 当应用程序试图调用类(静态或实例)的指定方法,而该类已不再具有该方法的定义时,就会抛出 `java.lang.NoSuchMethodError` 错误。简单地说,就是同一个类有多个版本,并且在运行
705 0
+关注
641
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载