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 界面