分享

ubuntu 下运行shell时的declare not found

 WUCANADA 2014-02-13

1、shell初识

先解释什么是shell,shell作为用户与linux/unix系统之间进行交互的程序。shell有许多不同的版本

sh :最初的shell

csh,tcsh,zsh:c shell.

bash:Linux中的主角,来自GNU项目。bash的优势是其源代码是公开的。

不同的shell语法有一些不同。

2、遇到问题和解决办法

写了如下脚本(compute.sh),来测试变量的声明:

#!/bin/sh
declare -i result=2*3+5*13-32+25
echo "your result is $result"

在终端中输入 sh compute.sh结果提示:declare not found

在网上查了一下,发现如下原因:可能是shell不同,不支持这种语法。

运行下面的命令,可以查看默认的shell是什么

ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2011-05-20 16:59 /bin/sh -> dash

通过查看发现默认的shell不是bash,而是dash。/bin/sh命令通常只是一个到实际使用中的shell的链接。(从上面执行结果也可以看出来它是一个链接,链接到dash)l表示是链接。

所以在上面我们输入sh compute.sh实际上是dash compute.sh而不是bash compute.sh

如果我们输入bash compute.sh,则输出结果是正确的。那如何才能把bash作为默认的shell呢?

可以用下面的命令来实现:

sudo dpkg-reconfigure dash

 此命令是对已安装的包进行重新配置,在菜单(dash-bash-sh.png)中选择是否将 sh 链接
 到 dash (Install dash as /bin/sh?) 选择否即可。

    附图一:Ubuntu 下设置 dash 界面

    

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多