创建博客 登录  
 加关注
   显示下一条  |  关闭

每日最新博客在置顶博客之后

weibo.com/php4linux (博文多为转载,只为分享学习于大家)

 
 
 

日志

 
 

ubuntu rc.local 为何不执行?  

2010-04-28 00:37:48|  分类: Linux/Unix |  标签: |字号 订阅

   为了让mysql开机启动,我将mysql命令添加到/etc/rc.local中,但怎么也运行不了。
一开始认为只是/etc/rc.local的权限问题,但通过以下命令修改后,还是不起作用。

sudo chmod +x /etc/rc.local  // 增加可执行权限
sudo chmod +s /etc/rc.local  // 增加s权限,即让普通用户执行该文件时拥有文件所有者的权限

后来
Google之后才发现是Ubuntu默认的dash在作怪

ls -al /bin/sh
lrwxrwxrwx 1 root root 4 2009-12-11 06:04 /bin/sh -> dash
ls -al /bin/dash
-rwxr-xr-x 1 root root 92132 2009-09-21 07:49 /bin/dash

可以看出Ubuntu默认将/bin/sh链接到/bin/dash,而/etc/rc.local脚本中用的正是/bin/sh,导致
出错,可以将/etc/rc.local的命令改成更加兼容的模式,或者直接将/bin/sh链接到/bin/bash。

/usr/bin/mystar >& /dev/null &         # dash报错,bash和csh不会报错
/usr/bin/mystar > /dev/null 2>&1     # dash兼容

     其实,从 Ubuntu 6.10开始,Ubuntu就将先前默认的bash shell 更换成了dash shell,
其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash。Ubuntu Edgy是第一个将dash
作为默认shell来发行的版本,这似乎是受了debian的影响。wiki 里面有官方的解释,
https://wiki.ubuntu.com/DashAsBinSh,主要原因是dash更小,运行更快,还与POSIX兼容。
但目前存在的问题是,由于shell的更换,致使很多脚本出错,毕竟现在的很多脚本不是100%POSIX兼容。

将默认的shell改成bash的方法:

方法1> 在终端执行 sudo dpkg-reconfigure dash,然后选择 no  (推荐)

方法2> 重新进行软链接

sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh
  评论这张
转发至微博
转发至微博
0   分享到:        
阅读(1757)| 评论(0)| 不可引用 |举报

历史上的今天

相关文章

最近读者

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012