Из сообщения ubuntuforums я сделал только что:
Рассмотрите следующий эксперимент:
applic@ion:~% sudo su
[sudo] password for applic:
root@ion:/home/applic# env > /tmp/sudo_su_env
root@ion:/home/applic# exit
exit
applic@ion:~% sudo -s
applic .bashrc read...
root@ion:~% env >/tmp/sudo_s
Вот различия, которые я нашел:
С sudo -s
:
HOME=/home/applic
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
reads $USER's ~/.bashrc
С sudo su
:
HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
reads /etc/environment
reads /root/.bashrc
Заметьте различие в $HOME
. Быть корнем и наличие $HOME
набор в дом обычного пользователя может вызвать проблемы. Например, если Вы запускаете графическое приложение, обычный пользователь ~/.Xauthority
может быть перезаписан корнем. Это вызывает проблемы обычного пользователя позже, такие как неспособность запустить определенные графические приложения через крон.
Подводить итог:
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
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
вероятно, установленный /etc/environment
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Нижняя строка sudo -i
надлежащая команда должна работать, когда Вы хотите корневую оболочку, которая не испорчена средой пользователя.
"Главным образом я должен знать, что различие между получением интерфейса eth0 впервые после начальной загрузки без сети и перезапуском сети, чтобы повторно получить интерфейс eth0 после один раньше ранее устанавливалось. Код работает на последнего".
Прежде чем Вы приблизитесь к нему тот путь, исключите интриги высокого уровня сетевой сервис ("NetworkManager"). Я всегда отключаю его и просто засовываю команды в процесс начальной загрузки в некоторой соответствующей точке (например, ifconfig eth0 up && dhclient eth0
), затем вручную запустите другие простые скрипты для переключения от eth до Wi-Fi и т.д., NetworkManager является гигантским разветвителем автоматизации, которая несомненно очень полезна, если Вы не знаете то, что "интерфейс" или является ведущим вокруг с ноутбуком, пытающимся перемещаться через сети Wi-Fi, но если Вы предпочитаете просто включать и выключать вещи самостоятельно, это может сделать раздражающий и таинственный выбор. Я признаюсь никогда учившийся, как настроить его по предпосылке, что инструмент высокого уровня, который более трудно использовать для выполнения определенной задачи, чем низкоуровневые инструменты, которыми это "управляет", не соответствующий инструмент в контексте той задачи.
В случае, если это не ясно:
когда я отключаю сеть, или ненастраиваю интерфейс или делаю sudo/etc/init.d/networking перезапуск
/etc/init.d/networking
подразумевает .deb систему (.rpm использование /etc/init.d/network
). Отключите это (и/или соответствующий новомодный сервис на системы, которые используют выскочку), таким образом, он не работает при начальной загрузке и заменяет его с любыми простыми командами, необходимо получить доступ сети где-нибудь поздно в процессе начальной загрузки. Если это существует, я также комментирую все в /etc/network/interfaces
кроме lo.
Я обычно не рассматривал бы этот хороший совет раздать другим пользователям, но Ваша проблема мне просто кричит, "betcha, которым случается так, что гигантский разветвитель" - который действительно необходимо исключить это, прежде чем Вы посмотрите позади него.