su root 和su - root 的区别

来源:互联网 发布:js获取position值 编辑:程序博客网 时间:2024/05/06 03:20

前几天,在一次项目中,犯了一个很低级的错误,但是没弄明白是什么问题。情况是这样的,我们在做灾备,重启系统化,以root用户权限,通过 su oracle ,进去后,oracle的rac 无法正常启动,我没细看,一直在找其他的原因,最后经过同事提醒,说应该执行 su - oracle。果然如他所说,进去后正常启动。

      今天忽然想起,又仔细查看了资料,做个笔记,备忘。也提醒自己注意细节。

 

su - root  is   the same as su -

just like login as root, then the shell is login shell,
which mean it will expericene a login process,
usually .bash_profile and .bashrc will be sourced

su  root    is    the same as su
like you open an interactive shell in root name,
then only .bashrc will be sourced.


su  后面不加用户是默认切到 root
su  是不改变当前变量
su - 是改变为切换到用户的变量 
也就是说su只能获得root的执行权限,不能获得环境变量

而su -是切换到root并获得root的环境变量及执行权限

语法:

$ su [user_name] 
su  命令可以用来交互地更改你的用户ID和组ID。  Su是switch user 或set user id的一个缩写。这个命令让你开启一个子进程,成为新的用户 ID 和赋予你存取与这个用户ID 关联所有文件的存取权限。因此,出于安全的考虑,你在实际转换身份时,会被要求输入这个用户帐号的密码。  
如果没有参数,su 命令将你转换为 root(系统管理员)。root 帐号有时也被称为超级用户,因为这个用户可以存取系统中的任何文件。也正是这个原因,许多人将su命令看成是 supper-user(超级用户)的一个缩写。当然,你必须要提供 root密码。  想要回到你原先的用户身份,不要再使用 su 命令,你只需要使用 exit命令退出你使用su命令而生成的新的对话进程。 
$ su – username 
一些配置文件是为你的对话线索而设立的。当你使用命令 su username时,你的对话特征和你原始的登录身份一样。如果你想要你的对话进程拥有转换后的用户 ID一致的特征,你要使用短斜杠: su – username。

原创粉丝点击