linux子用户修改环境变量,切换到root环境用户变量不生效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux子用户修改环境变量,切换到root环境用户变量不生效相关的知识,希望对你有一定的参考价值。

参考技术A 修改 /root/.bashrc 添加

子用户登录的Ubuntu系统,然后修改了/etc/profile环境变量(配置了JAVA_HOME), 并且执行过 source /etc/profile , 在当前用户下 java -version 是正常的, 但是 su root 切换到root用户后 java -version 无效(环境变量失效), 需再执行 source /etc/profile 才行.
网上说的大多是 /etc/profile中的修改需系统启动后方生效

su切换用户

#查看当前用户

[[email protected] ~]# id

uid=0(root) gid=0(root) 组=0(root)

[[email protected] ~]# whoami

root


su  切换用户

-   在切换用户的同时,把用户的环境变量全部切换到那个用户的环境变量下;若不加这个-,就是当前的环境变量下


注:root切换到其他用户下,不需要输入密码;而其他用户切换到root下,是需要输入密码的。


# - 加与不加的区别

[[email protected] ~]# su wyy

[[email protected] root]$ echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[[email protected] root]$ pwd

/root

[[email protected] root]$ exit

exit

[[email protected] ~]# su - wyy

[[email protected] ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wyy/bin

[[email protected] ~]$ pwd

/home/wyy


有时候有这样的需求,切换到普通用户下,目的不是为了切换,是为了在这个用户的环境下去执行一条命令,也就是以这个用户的身份去执行某一条命令。不用切换,可以直接这样用:

#查看用户的id

[[email protected] ~]# su - -c "id" wyy

uid=500(wyy) gid=500(wyy) 组=500(wyy)

#创建目录并查看(若提示权限不够,把/tmp权限修改为1777)

[[email protected] ~]# su - -c "mkdir /tmp/1212" wyy

[[email protected] ~]# su - -c "ls -ld /tmp/1212" wyy

drwxrwxr-x 2 wyy wyy 4096 9月  24 11:17 /tmp/1212


本文出自 “linux” 博客,转载请与作者联系!

以上是关于linux子用户修改环境变量,切换到root环境用户变量不生效的主要内容,如果未能解决你的问题,请参考以下文章

Linux中susu -和sudo的区别

linux添加用户到sudo里

linux命令sudo su啥意思

Linux su命令——su默认不修改环境变量 su - 要修改当前工作目录和环境变量

linux su和sudo命令的区别

linux su和sudo命令的区别