Назад | Перейти на главную страницу

sudo -i ведет себя не так, как ожидалось

Зачем 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 оценивается в командной строке, а команда выполняется как начальный пользователь.