declare:not found解决办法

偏执的太偏执、 2022-08-09 16:36 362阅读 0赞

错误现象:

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博主。

需要用sudo dpkg-reconfigure dash指令

然后在出现的菜单中按Tab键选择NO

http://blog.sina.com.cn/s/blog\_7d0c2fed01010zbz.html

发表评论

表情:
评论列表 (有 0 条评论,362人围观)

还没有评论,来说两句吧...

相关阅读