在以普通用户登录系统后,需要用su切换至管理员权限。

今天有一同事说在切换用户的时候,找不到该用户下用户命令,后来仔细检查了一下过程,发现他切换用户的时候用的命令是 su oracle,以前我们切换用户的时候是su - oracle ,只知道要这样用,不清楚为什么要这么用,今天我仔细研究了他们的区别,以下是研究的过程:

先用su oracle并且把环境变量重定向到/tmp/1 中

[root@stream ~]# su oracle

[oracle@stream root]$ env >>/tmp/1

再用 su - oracle 把环境变量重定向到/tmp/2中

[root@stream ~]# su - oracle

[oracle@stream ~]env >>/tmp/2

比较上面2个过程,可以发现当使用su oracle 的时候,目录没有改变,而且PATH的变量也没改变,用diff /tmp/1 /tmp/2 比较2个环境变量

[oracle@stream tmp]$ diff 1 2

4,6c4

< HISTSIZE=1000

< SSH_CLIENT=200.120.75.211 1765 22

< SSH_TTY=/dev/pts/1

---

> HISTSIZE=500

9,11c7,11

< PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

< MAIL=/var/spool/mail/root

< PWD=/root

---

> ORACLE_SID=orcl

> ORACLE_BASE=/DBSoftware/app/oracle

> LD_LIBARY_PATH=/DBSoftware/app/oracle/product/10.2.0/db_1/lib

> MAIL=/var/spool/mail/oracle

> PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin:/DBSoftware/app/oracle/product/10.2.0/db_1/bin

12a13

> PWD=/tmp

14a16

> SHLVL=1

16d17

< SHLVL=2

19d19

< SSH_CONNECTION=200.120.75.211 1765 200.120.75.214 22

20a21

> ORACLE_HOME=/DBSoftware/app/oracle/product/10.2.0/db_1

22a24

> OLDPWD=/home/oracle

[oracle@stream tmp]$ diff 1 2

4,6c4

< HISTSIZE=1000

< SSH_CLIENT=200.120.75.211 1765 22

< SSH_TTY=/dev/pts/1

---

> HISTSIZE=500

9,11c7,11

< PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

< MAIL=/var/spool/mail/root

< PWD=/root

---

> ORACLE_SID=orcl

> ORACLE_BASE=/DBSoftware/app/oracle

> LD_LIBARY_PATH=/DBSoftware/app/oracle/product/10.2.0/db_1/lib

> MAIL=/var/spool/mail/oracle

> PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin:/DBSoftware/app/oracle/product/10.2.0/db_1/bin

12a13

> PWD=/tmp

14a16

> SHLVL=1

16d17

< SHLVL=2

19d19

< SSH_CONNECTION=200.120.75.211 1765 200.120.75.214 22

20a21

> ORACLE_HOME=/DBSoftware/app/oracle/product/10.2.0/db_1

22a24

> OLDPWD=/home/oracle

[oracle@stream tmp]$

这里可以很清楚的看到当使用 su oracle 的使用,oracle 用户下的环境变量很多都没加载进来,可su - oracle都吧环境变量都加载了呢,这是为什么呢?

我们 man su 一下, -, -l, --loginmake the shell a login shell 大概意思就是用su - 的时候要执行一下登陆的shell脚本,我们都知道在用户登陆过程中用/etc/profile,.bash_profile,.bashrc,/etc/bashrc这些脚本来决定环境变量,下面再做个测试:

在root用户下,

[root@stream ~]# echo $HISTSIZE

1000

现在我们改变下/etc/profile 中HISTSIZE 变量的值 改成500,

[root@stream ~]# grep HISTSIZE /etc/profile

HISTSIZE=500

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

然后su oracle,

[root@stream ~]# su oracle

[oracle@stream root]$ echo $HISTSIZE

1000

[oracle@stream root]$

su - oracle 呢?

[root@stream ~]# su - oracle

[oracle@stream ~]$ echo $HISTSIZE

500

HISTSIZE 变量值变了。

通过以上比较我们发现用su - 就相当于一个完整的登陆过程,而su只是简单的把用户切换过去,一些环境变量什么的都没带过去。

最后加上:login shell , /etc/profile,.bash_profile,.bashrc,/etc/bashrc 都执行

non login shell, /etc/profile,.bash_profile 不执行, .bashrc,/etc/bashrc 执行。

linux关闭防火墙时出现问号乱码,linux文件名乱码问题的解决方...-tcp_wrappers防火墙配置方法-su 与 su - 的比较_169IT.COM...相关推荐

  1. 解决文件上传时,服务器中中文文件名乱码问题

    解决文件上传时,服务器中中文文件名乱码问题 参考文章: (1)解决文件上传时,服务器中中文文件名乱码问题 (2)https://www.cnblogs.com/yang-xiansen/p/11167 ...

  2. linux getit文件乱码,winzipaes文件名乱码解决方案

    winzipaes是一个开源的基于javaZip的加密压缩工具 目前代码托管在google上(http://code.google.com/p/winzipaes) 需要依赖bcprov的包,可以去m ...

  3. linux乱码,文件名乱码、文件内容乱码,JDK编码。 CKFinder文件名称乱码 (使用UTF-8解决)

    我遇到一个问题,CKFinder后台获取到的文件名是问号. 肯定是编码问题. 第一步,修改jdk编码 (目标读取到正确的文件名称.验证方法输出文件名到日志文件,下载日志到本地确定不乱码) 解决方法to ...

  4. linux查看文件时显示行号,linux中查看文件时显示行号

    linux中查看文件时显示行号 [root@1-min etc]# cat -n rsyslog.conf              //显示所有行号(包括空行) [root@1-min etc]# ...

  5. linux 关闭ext3日志,ssh – 可以在Linux(ext3)上减慢日志写入速度吗?

    我想知道tailf是否可以生成阻塞I / O,这会降低因日志记录而导致的服务器响应速度. 对于前者假设以下设置: Debian 5.1 linux服务器(foo)通过终端管理(foo托管在EC2上). ...

  6. kali linux关闭进程,技术|如何使用 Kali Linux 黑掉 Windows

    Kali Linux 派生自 Debian Linux,主要用于渗透测试,拥有超过 300 个的预安装好的渗透测试工具.Metasploit 项目中 Metasploit 框架支持 Kali Linu ...

  7. linux mint安装时窗口太大,Linux Mint安装日记

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 关于Mint的简介我就不多说了,跟Ubuntu差不多吧,但感觉上没有Ubuntu花哨,这就是我选择Mint的原因. Ub ...

  8. linux关闭welcome界面,CentOS 7开机出现welcome to emergency mode! 解决方法

    CentOS7.3昨天用的还好好的的,但是今天开机提示如下(如图提示): welcome to emergency mode!after logging in ,type "journalc ...

  9. Linux安装库时安装源错误,linux环境下golang安装第三方库的时候出错的决办法

    1.错误描述 使用如下方式安装beego的时候出错 go get github.com/astaxie/beego 错误信息: go install unicode/utf8: open /opt/g ...

  10. 计算机中文名称乱码,中文文件名乱码怎么解决?

    01 首先,我们点击左上角的Microsoft按钮,界面弹出,找到Windows系统,点击打开,然后点击控制面板.进入控制面板后,单击appearance和personalization.对于弹出界面 ...

最新文章

  1. Java中ArrayList源码分析
  2. python+scapy 抓包与解析
  3. javascript的缓动效果
  4. 金融领域下的数据挖掘算法应用:XGboost模型
  5. 搭建MongoDB分片集群
  6. 使用UTL_FILE在oracle中读写文本数据
  7. python课本第三章答案idle_第三天任务 (【基于Python编程从入门到实践】第三章 列表 书本及动手试一试)...
  8. 手机能打开的表白代码_数据分析移动化:打开手机就能做分析
  9. 明晚9点 华为新款折叠屏手机MateXs即将闪亮登场
  10. PHP学习总结(6)——PHP入门篇之PHP语句结束符
  11. iOS 13 暗黑模式的适配
  12. linux下绿联USB转网卡驱动安装
  13. 计算机程序员求职信英语作文,程序员英文求职信范文
  14. python输出26个大写字母怎么读_26个大写字母怎么读?
  15. P1262 间谍网络+Trajan 缩点(有向图)
  16. Java基础-GUI入门-Swing详解
  17. 爬豆瓣读书Top250
  18. a java programe about tcp server
  19. 20190323-Excel使用手册
  20. 谷歌背后的强权人物——首席法律官肯特·沃克

热门文章

  1. 直播常见协议概念说明
  2. 信道估计之MMSE算法
  3. 移动通信网络架构 1G-5G
  4. 使用latex做三线表
  5. 微型计算机 路由,华硕RT-AC68U无线路由器深度体验
  6. 乐理基础-曲谱、简谱、音名、唱名、调、调号
  7. python登录微信pc版_微信PC版内测更新,又增加2个实用功能
  8. 【事件相机整理】信号处理、噪声与滤波
  9. 2019全国大学生电子设计竞赛备赛笔记--风力摆--板球--模拟曲射电磁炮
  10. 快速傅里叶变换(MATLAB实现)