注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
eviltomato的个人空间 https://home.eeworld.com.cn/space-uid-513219.html [收藏] [复制] [分享] [RSS]
日志

为什么sudo不能执行sudo cd (转)

已有 1554 次阅读2014-9-15 10:54 |个人分类:嵌入式Linux笔记| sudo

运行环境:RedHat 5
已经在sudoers中设置了
test   ALL=(ALL)   ALL  
注:test 是一个测试用户

我用sudo ls /home 可以,为什么用sudo cd /home就不可以呢?
错误提示:sudo: cd: command not found

1、cd是bash的内部命令,不是一个可执行文件,sudo没法识别
2、cd是一个交互式的辅助命令,而sudo通常是用来完成一个非交互式的动作(比如使用编辑器打开某一个文件,启动一个服务)
3、cd是shell的内部命令。所谓shell是一个交互式的应用程序(也可以以batch方式运行,和python比较相似)。shell执行外部命令的时候,是通过fork/exec叉一个子进程,然后执行这个程序。sudo的意思是,以别人的权限叉起一个进程,并运行程序。而cd是内部命令,也就是说,是直接由shell运行的,不叉子进程。你在当前进程里当然不能提升进程的权限(其实也可以,不过得编程的时候写到代码里,然后再编译,而我们的shell没有这个功能,否则岂不是太危险了?)。
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章