在看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了。