【Linux】Linux su命令详解

【Linux】Linux su命令详解


su

su(switch user)切换⽤户

普通⽤户切换到任何⽤户都需要输⼊密码

root⽤户切换到任何⽤户都不需要输⼊密码

su - username

su 与 su -区别

以实例说明:

[root@home ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G   48K   16G   1% /dev/shm
tmpfs            16G   58M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/sda1        59G   34G   24G  59% /
tmpfs           3.1G     0  3.1G   0% /run/user/0
[root@home ~]#
#如上默认系统的环境变量语言项是英文的
[root@home ~]# export LANG=zh_CN.utf8
[root@home ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs         16G     0   16G    0% /dev
tmpfs            16G   48K   16G    1% /dev/shm
tmpfs            16G   58M   16G    1% /run
tmpfs            16G     0   16G    0% /sys/fs/cgroup
/dev/sda1        59G   34G   24G   59% /
tmpfs           3.1G     0  3.1G    0% /run/user/0
[root@home ~]#
#如上临时设置语言为中文后,语言变为了中文
[root@home ~]# pwd
/root
[root@home ~]#
#如上此时的工作目录为/root
#su oracle
[root@home ~]# su oracle
[oracle@home root]$ df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs         16G     0   16G    0% /dev
tmpfs            16G   48K   16G    1% /dev/shm
tmpfs            16G   58M   16G    1% /run
tmpfs            16G     0   16G    0% /sys/fs/cgroup
/dev/sda1        59G   34G   24G   59% /
tmpfs           3.1G     0  3.1G    0% /run/user/0
[oracle@home root]$ pwd
/root
[oracle@home root]$
#如上su命令切换用户后工作目录没有改变,root用户下的临时环境变量设置还有效
[oracle@home root]$ sqlplus -v
bash: sqlplus: 未找到命令
[oracle@home root]$
#su - oracle
[root@home ~]# su - oracle
上一次登录:三 420 19:44:55 CST 2022pts/11 上
[oracle@home ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G   48K   16G   1% /dev/shm
tmpfs            16G   58M   16G   1% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/sda1        59G   34G   24G  59% /
tmpfs           3.1G     0  3.1G   0% /run/user/0
[oracle@home ~]$ pwd
/home/oracle
#如上su -命令切换用户后,工作目录变为了切换后用户的家目录,root用户下的临时环境变量设置已失效,实际生效的是用户家目录下的.bash_profile环境变量
[oracle@home ~]$ sqlplus -v

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@home ~]$ cat .bash_profile|grep ORACLE_HOME
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
[oracle@home ~]$
[oracle@home ~]$ ls -lsa $ORACLE_HOME/bin/sqlplus
28 -rwxr-xr-x. 1 oracle oinstall 24864 Apr 18  2019 /opt/oracle/product/19c/dbhome_1/bin/sqlplus

总结:

​ su 切换用户加"-",就不继承上一个用户shell的环境变量。

​ 也就是说:使用su命令切换用户的时候使用的还是上一个用户的环境变量,su - 切换用户后使用的是切换后用户的环境变量设置(.bash_profile)

​ 如果在写shell脚本的时候,涉及到一些环境变量,切换用户不加"-",错误的调用错误的环境变量可能就会达到一些意想不到的效果

推荐切换用户使用su -命令

提示符信息

[root@home ~]#

​ 如上用户登录后@符号前面表示的是登录的用户信息,但是只看这个其实是不准确的,@前面这个信息其实是可以修改的

​ 查看当前登录的是哪个用户,应该使用whoami命令

[root@home ~]# whoami
root
[root@home ~]#

修改提示符信息:

[root@home ~]# echo $PS1
[\u@\h \W]\$
[root@home ~]#
#如上\u表示的是当前连接的用户 \h表示主机名 \W表示工作目录(默认是相对路径,只有一层)
[root@home ~]# export PS1='[test@\h \W]\$'
[test@home ~]# whoami
root
[test@home ~]#
#如上将提示符中用户名部分写死,提示符就被改变了,此时只看提示符是不能确定实际的用户,还得使用whoami命令

#提示符中也是可以使用命令的,命令需要用反引号引起来,如下
[root@home ~]# export PS1="[`whoami`@`hostname`:"'$PWD]$'
[root@home:/root]$cd /root/gauss_om/
[root@home:/root/gauss_om]$
  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tzq@2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值