su vs su -(在 Debian 上):为什么 PATH 相同?

Pau*_*ulP 4 command-line shell su

我知道su和之间应该有什么区别su -,但例如在我的系统(Debian)中PATH是相同的:

[root]# su
[root]# echo $PATH
/user_path/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[root]# exit
[root]$ su -
[root@debian ~]# echo $PATH
/user_path/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

所以我开始认为可以在配置文件中更改设置。

Mik*_*kel 5

要配置su PATH,请查看/etc/login.defs

ENV_SUPATH      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)

还有一些其他地方PATH可以改变,包括:

  • /etc/environment
  • /etc/bash.bashrc
  • /etc/profile
  • /etc/profile.d/*
  • ~/.bashrc
  • ~/.bash_profile

如果没有每个用户设置什么特别的东西,su似乎越来越其PATH/etc/environmentsu -似乎是从获取其环境/etc/login.defs ENV_SUPATH

所以,你的系统上,我的猜测是,你有同样的PATH价值/etc/login.defs/etc/environment,或者你有一些额外的配置/etc/profile.d/etc/bash.bashrc或在一些RC文件/home/someuser