None

SHELL2010-11-21 09:16

在看update-grub的时候,发现还有一个update-grub2的东东,ls -l了一下,发现两个都不是链接,于是cat一下,原来两个都是脚本来的:
update-grub:

#!/bin/sh -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

update-grub2:

#!/bin/sh -e
exec update-grub "$@"

看来update-grub2是调用update-grub的了~不过奇怪sh -e是什么呢?于是man并且顺便ls -l了一下/bin/sh,居然发现sh是指向dash的!没有办法,没见过dash,那就google吧!
据说dash更快,但是功能没有bash全,Ubuntu为了提高启动速度,从6.10开始就把缺省的SHELL改成了dash,但却带来了广大程序员的痛骂,因为dash的功能也弱一些,不少非posix的语法并不支持。

最暴力的方法是直接把/bin/sh的软链接改到bash中,但是也有优雅一些的方法:sudo dpkg-reconfigure dash出现菜单问你是否用dash的时候,选no就可以了,再次检查一下,ls -l /bin/sh发现软链接指向/bin/bash了。


原文链接: http://blog.jtwo.me/bin_sh-and-bin_bash