
Я установил скрипт в свою учетную запись .bash_profile без прав root на моей машине Centos Linux, чтобы изменить PS1 после sudo su, но поскольку sudo su на самом деле создает новый сеанс, скрипт, конечно же, останавливается, а мой PS1 остается прежним, несмотря на то, что мой .bash_profile говорит изменить его, здесь нет ничего неправильного, но есть ли способ выполнить команду (в моем случае, чтобы изменить мой PS1) после sudo su? Я также попытался поместить скрипт в .bashrc, и то же самое.
решение1
На мой взгляд, нагромождение вещей sudo
приводит su
к беспорядку.
Для меня наиболее надежный способ создания правильной среды для root, включающий установку правильного PATH и других настроек из соответствующих файлов, /root/
этоsudo -i
Пожалуйста, прочтите страницы руководства.man su
иman sudo
потому что есть куча тонкостей с PATH и другими переменными сеанса и среды, которые можно изменить или нет по умолчанию или с помощью определенных переключателей.
Обратите внимание на разницу между su -
и , su
а также на тот факт, что обычно sudo настроен /etc/sudoers
на подавление определенных переменных среды ...
Этот стол(и вся статья) приводит некоторые различия, на первый взгляд, похожих команд:
corrupted by user's
HOME=/root uses root's PATH env vars
sudo -i Y Y[2] N
sudo -s N Y[2] Y
sudo bash N Y[2] Y
sudo su Y N[1] Y
[1] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
probably set by /etc/environment
[2] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin