刚才写hadoop安装的时候,发现sudo执行命令时,原本设置在prifile里面的PATH等设置全部都失效了,man了一下sudo的参数发现sudo的执行有-i和-s的区别,

-s是用当前的上下文,只能用一些原生命令,语句执行的当前目录仍然是当前用户的操作目录。而-i则是重新开启了一个登陆过程,他会触发/etc/profile以及用户自身的.profile等脚本的执行,并且语句执行的当前目录已经被更改为目标用户的主目录。 加上-i 后恢复正常。

另外说一点的是,不论-s还是-i,命令中$引用的环境变量全部来源于当前用户,Linux命令行应该是先进行代码的文本替换再执行代码,这点就类似以前学C的宏了。