运行环境: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没有这个功能,否则岂不是太危险了?)。