su教程中su与su-命令的环境变量到底有什么区别呢?
在Linux系统里,
su
su-
-
命令plaintext复制
su
- 命令用于切换用户,但不会改变当前的环境变量。当使用plaintext复制
su
切换到其他用户时,新用户会继承当前用户的环境变量设置。plaintext复制su
- 例如,当前用户的环境变量为plaintext复制
PATH
,使用plaintext复制/usr/local/bin:/usr/bin:/bin
切换到其他用户后,新用户的plaintext复制su
依然是这个设置。plaintext复制PATH
- 这就意味着新用户在执行命令时,会按照原用户的环境变量来查找可执行文件。
-
命令plaintext复制
su-
- 命令不仅会切换用户,还会完全切换到新用户的环境。它会读取新用户的环境变量配置文件,如plaintext复制
su-
、plaintext复制.bash_profile
等。plaintext复制.bashrc
- 假设新用户的环境变量配置为plaintext复制
PATH
,使用plaintext复制/usr/sbin:/sbin:/usr/bin:/bin
切换到该用户后,新用户的plaintext复制su-
就会变成这个新的设置。plaintext复制PATH
- 这样新用户在执行命令时,会依据自己的环境变量来查找可执行文件。
以下用表格来直观展示二者区别:
命令 | 环境变量变化 | 示例 |
---|---|---|
plaintext 复制 su | 继承当前用户环境变量 | 当前用户 plaintext 复制 PATH plaintext 复制 /usr/local/bin:/usr/bin:/bin plaintext 复制 PATH |
plaintext 复制 su- | 切换到新用户环境变量 | 新用户 plaintext 复制 PATH plaintext 复制 /usr/sbin:/sbin:/usr/bin:/bin plaintext 复制 PATH |
综上所述,
su
su-
su
su-