Linux中su和su -区别,别再傻傻分不清
写在前面
如果你不清楚su和su -切换用户的区别,你一定会遇到在使用su切换用户执行命令出现报错"command not found"感到惊讶。分明之前这个指令执行的好好的,为什么现在就报错了呢?关键原因就在于你不清楚su和su -命令使用的区别。
su与su -区别
su和su - 命令使用最主要的区别主要是涉及login-shell和non-login shell的变量读取方法,两种不同的变量读取方法导致执行用户切换后HOME/PATH/USER/MAIL等变量不同。
下面我们通过实例再具体展开讲述这两者间的区别。
su切换用户

划重点:
(1)PATH变量没有切换成新用户root,还是dmtsai用户的。su切换新用户后的PATH变量不包含/sbin、/usr/sbin等目录。
(2)PWD目录没有发生切换。
(3)用户身份发生切换,切换成root。但是USER变量还是切换前用户。
su - 切换用户

划重点:
(1)PATH变量切换成新用户root,包含/sbin、/usr/sbin等目录。
(2)PWD目录切换成root用户家目录。
(3)用户身份发生切换,且USER变量为root。
回归问题
现在知道为什么su切换用户后执行命令依然会出现报错"command not found"的原因了吧。linux执行命令会通过PATH变量中的目录依次查找,当路径中不包含/sbin、/usr/sbin等目录时自然就找不到。
总结
如果想要完整的切换到新用户环境,必须使用su -切换 ,这样才会连同PATH/USER/MAIL 等变量都转成新用户的环境。也就不会出现意料之外的事情了。
Linux中su和su -区别,别再傻傻分不清的更多相关文章
- Linux中终端和控制台区别
Linux中终端和控制台区别: 终端:英文名叫terminal 控制台:英文名叫console 两者区别要从以前的多人使用的计算机开始 以前,由于计算机很昂贵,所用一台计算机一般由多个人同时使用.这样 ...
- Linux 中 sudo、su命令
sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认为一次时长15分钟.su : 切换到某某用户模式,提 ...
- Linux中ctrl-c, ctrl-z, ctrl-d 区别
在Linux中: ctrl-c: ( kill foreground process ) 发送 SIGINT 信号给前台进程组中的所有进程,强制终止程序的执行: ctrl-z: ( suspend ...
- linux中nohup 与 & 的区别
Linux/Unix下,通常只有守护进程可在脱离终端的情况下能继续执行,而普通进程在关闭终端时会因收到SIGHUP信号(挂起信号)而退出.当终端退出后,由该终端启动的后台程序自动退出. 若想命令在后台 ...
- linux 中的斜杠 ‘/’ ‘\’ 的区别 - 服务器是LINUX的注意了, 和windows 的不一样哦!
ubuntu@ubuntu:~$ vi \> ubuntu@ubuntu:~$ 稍微思考了一下就明白了,不是打不开,问题出在这个文件名" \ "上面. 反斜线符号" ...
- linux中 ll 和ls 区别
ll 列出来的结果详细,有时间,是否可读写等信息 ,象windows里的 详细信息ls 只列出文件名或目录名 就象windows里的 列表 ll -t 是降序, ll -t | tac 是升序 l ...
- Linux中man命令的使用方法再解释
原文链接:http://www.linuxidc.com/Linux/2017-03/142407.htm Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下 ...
- linux中yum与rpm区别
一.源代码形式 1. 绝大多数开源软件都是直接以原码形式发布的 2. 源代码一般会被打成.tar.gz的归档压缩文件 3. 源代码需要编译成为二进制形式之后才能够运行使用 ...
- Linux中一些命令的区别
1. yum provides 和 yum search provides是在文件中查找软件,类似于rpm -qf: search是查找软件包或其描述的关键字. 2. gzip 和 bzip2 对 ...
- python在Linux中安装虚拟环境,区别python2和python3,分别安装模块
安装虚拟环境的时候遇到的问题,解决的过程很闹心,在这里简单直接的分享出来,就是为了解决问题. 安装虚拟环境(须在联网状态下) $ sudo pip install virtualenv $ sudo ...
随机推荐
- Android Studio采坑记录
折腾了几个月的Android Studio,终于在今天被我搞定了 ( ̄▽ ̄)~* 开贴记录下,免得下次再次采坑 先说下我之前电脑的环境配置吧,sdk是几年前在网上下载别人整理出来的包,一直没有更新过 ...
- 关于Type-C扩展坞干扰路由器交换机的解决方案
近期看到网友反馈Type-C扩展坞干扰交换机的问题,具体表现为USB Type-C扩展坞在同时插上网线和PD充电的情况下,引起路由器或交换机死机,导致局域网断开的情况.经实测分析,原因为部分电脑默认设 ...
- jmeter接口测试 -- status==400(Bad Request)
一.接口请求信息 二.错误的jmeter接口请求 1.请求内容 2.响应内容 三.正确的接口请求 1.看回原本的接口请求信息,company_id = null .这里也就不能空 四.原因分析 1. ...
- Java基础之(IO流)
简介: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. 一.File ...
- ubuntu 12.04无盘工作站
注释:该篇博文是借鉴下列文章加上自己实践总结得来: a. http://forum.ubuntu.org.cn/viewtopic.php?f=77&t=117754 b. http://bl ...
- 《HelloGitHub》第 52 期
兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...
- 第三章 Java面向对象(下)
3.1.抽象类 概述:在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了 格式:public abstract class 类名 {} 语法特点: 抽象类和抽象方法必须使 ...
- 如何查看Oracle的版本
本人使用的软件是DataGrip 在控制台输入 select * from v$version;
- Django学习路37_request属性
打印元信息,基本上都会打印出来 类字典结构的 key 键 允许重复 get 请求可以传参,但是长度有限制 最大不能超过 2K post 文件上传使用 get 参数 默认放在网址中 post 在 ...
- metaclass 拦截类的创建,并返回
def upper_attr(future_class_name, future_class_parents, future_class_attr): #遍历属性字典,把不是__开头的属性名字变为大写 ...