ubuntu 下运行shell时的declare not found

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值