Зачем sudo -i
команда не устанавливает TERM, PATH, HOME, SHELL, LOGNAME, USER и USERNAME на моем свежем Ubuntu 12.04.1 LTS, как описано в руководство?
# sudo -u johnny -i echo $HOME && echo $USER
/root
root
С помощью -H
также не устанавливает $ HOME. И у моего пользователя есть дом:
# cat /etc/passwd
[..]
johnny:x:1000:1000::/home/johnny:/bin/bash
Обновить : Почему у меня такая проблема? Поскольку я пытаюсь создать задание ubuntu upstart для нескольких приложений-единорогов, и я использую пользовательскую установку RVM + Bundle: без правильной оценки $ HOME RVM не находит ~ / .rvm.
В вашем примере переменные ($HOME
, $USER
, ...) интерпретируются до sudo
команда выполняется.
Это, напротив, должно работать так, как вы этого ожидали:
sudo -u johnny -i env | grep HOME
Не совсем ответ, но пробовали ли вы это:
$ cat /home/foo/test.sh
#!/bin/sh
echo $USER
echo $HOME
$ chmod +x /home/foo/test.sh
$ sudo -u johnny -i "/home/foo/test.sh"
johnny
/home/johnny
При запуске этого:
$ sudo -u johnny -i echo $USER && echo $HOME
root
/root
Похоже на твой $USER
оценивается в командной строке, а команда выполняется как начальный пользователь.