Ubuntu Shell学习笔记

在Ubuntu下用sh -x <script-name> 调试一个shell脚本,发现shell不支持下面这种for loop

for (( expr1; expr2; expr3 ))上网搜索了以下,才发现Ubuntu默认的shell不是默认的bash,而是采用了dash,如下所示

fly@fly-laptop:~$ which sh

/bin/sh

fly@fly-laptop:~$ ls -l /bin/sh

lrwxrwxrwx 1 root root 4 2010-07-06 04:50 /bin/sh -> dash

如果想将默认的shell改回bash,方法就是在终端执行 sudo dpkg-reconfigure dash,然后选择 no。

但是Ubuntu默认设置还是不做修改,改用 /bin/bash -x <script-name> 替代

不过有一点比较奇怪,如果直接用  ./<script-name> 运行shell脚本,发现不存在上述的问题,难道这样不是调用dash shell,confused.

另外还可以使用bashdb调试shell脚本,如果想用IDE,可以使用尝试ddd --debugger /usr/bin/bashdb <script-name>