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

原创 2013年12月02日 14:42:26
#../gcc-4.6.3/configure --prefix=/usr/local/gcc-4.6.3 --enable-threads=posix --disable-checking --enable--long-long--with-zlib-include=/usr/src/linux-2.6.32.12-0.7-obj/x86_64/default/include/config/zlib  --with-zlib-lib=/usr/src/linux-2.6.32.12-0.7-obj/x86_64/default/include/config/zlib --enable-languages=c,c++,java

错误现象:

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/Linux2.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/Linux2.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)
归结来说,为两种方式。以上两种方法都可以实现。

相关文章推荐

Ubuntu下运行Shell脚本时显示“declare not found”的问题

此种问题只在 Ubuntu 下才会出现!安装 debian 系统根本不存在此类问题,因为只有 Ubuntu 把默认的 bash 替换成了 dash. 在使用 debian 一天后感觉:Ubuntu ...

执行shell脚本中declare: not found

     在学习 Shell 脚本的时候,有两个例子在运行时出现异常。比如,我在 test-dash.sh 脚     本输入如下内容:         echo -e "Trekshot...

shell脚本中执行时提示“没有那个文件或目录”的解决办法

故障现象:在终端直接cd /var正常,在shell脚本中执行则报错。原因是脚本是在windows平台下写的,换行符与linux不同,造成脚本不能正确执行 出现bad i...

Ubuntu 下运行 Shell 脚本时显示 "declare not found" 的问题

-------------------------------------------------------------------------------     declare not fou...

Android 使用adb shell命令时出现sqlite3 : not found 问题 解决方法

在Android开发中,使用 adb shell 下的 sqlite3 命令来查看操作SQLite数据库时,遇到了 [ sqlite3 : not found] 问题。 网上找了下问题的原因——模拟器...

嵌入式 shell脚本赋值的5种方法

1. Shell中的变量类型 Shell中的变量可以分为环境变量、位置变量、预定义的特殊变量以及用户自定义变量、 2. 环境变量 Shell中的环境变量是一类Shell预定义变量,是用于设置系统运行...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:56
  • 523

Notepad++编写的shell脚本在linux下无法执行的解决方法

Notepad++ 是一款Windows环境下免费开源的代码编辑器,支持的语言:C, C++ , Java , C#, XML, HTML, PHP, Javascript! 本文给大家...
  • wyc_cs
  • wyc_cs
  • 2016年05月20日 09:33
  • 2993

Shell脚本实现动态配置IP与路由:解决嵌入式Android/Linux有线和无线网卡双网共存问题

Shell脚本实现动态配置IP与路由:解决嵌入式Android/Linux有线和无线网卡双网共存问题 网络环境及问题再现 命令行方式实现双网共存 Shell脚本自动实现双网共存(根据网络环境动态配置I...

shell脚本直接执行没有问题,crontab定时执行失败的解决方法

crontab 定时执行不生效: 1.环境变量问题 2.执行路径问题 问题2往往可以归结为问题1,即配置环境变量。 1.方法: 在开头部分添加: PATH=/usr/local/s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 Shell脚本执行时出现declare: not found的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)