Я вижу, что su -
делает оболочку оболочкой входа в систему из su --help
. Мне любопытно, в чем разница между этим и обычной командой su
.
Я знаю, что, кажется, есть разница в путях, какие-то другие различия или это почти единственная разница?
AFAIK su -
имитирует новый вход в систему, поэтому запускает все, что связано с входом в систему, в то время как su
просто переключает пользователя в root.
Разница, с которой я обычно встречаюсь, - это разница в переменных среды. Су - изменить среду, Су нет. Например: "su -" может дать другой путь, доступ к другим инструментам, Может дать другой дом с другой конфигурацией (~/.ssh!/.Xauthority и т.д.)
Исходные файлы оболочки ~/.profile, если они существуют. Следовательно, это действительно зависит от того, что у вас есть в вашем ~/.profile?
Обычно это различия в переменных среды, такие как PATH или приглашение (переменная среды PS1), но, очевидно, могут быть и другие различия. Это действительно зависит от того, что вы положили в свои скрипты конфигурации оболочки.
от man su
-, -l, --login
make the shell a login shell
поэтому следующий вопрос - что такое оболочка входа в систему и чем она отличается от оболочки без входа в систему.
В man bash
под INVOCATION
вы можете прочитать длинную и педантичный секцию, которая сводится к чему - то вроде: войти оболочка запускает файл profile
(ы) (например , /etc/profile
и т.д. / профиль и ~/.bash_profile
, а интерактивные без входа пробегов оболочки файлы bashrc
.