1 (2014-11-04 21:41:46 отредактировано zrpg)

сегодня обратил внимание на вот такой вывод при работе sudo:

sudo echo $HOME
/home/evg

sudo -H echo $HOME
/home/evg

sudo xfce4-terminal
затем в нём echo $HOME
/root

sudo vim
затем в нём :! echo $HOME
/root

Объясните пожалуйста почему так, я не понимаю

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

2

Я не уверен, т.к. sudo не пользуюсь, но предположу что логика такова

zRPG пишет:

sudo echo $HOME
/home/evg

sudo -H echo $HOME
/home/evg

Выводит значение для текущего пользователя. Просто с повышенными привилегиями выполняется непосредственно echo. А значение $HOME берется от того кто выполняет (вводит) в шелле команду.

zRPG пишет:

sudo xfce4-terminal
затем в нём echo $HOME
/root

sudo vim
затем в нём :! echo $HOME
/root

С повышенными привилегиями запускается терминал, и все что в нем уже выполняется - от обладателя повышенных привилегий (они повышены пока команда не будет завершена, а она не завершена пока терминал не будет закрыт), потому $HOME становится /root.

з.ы. насколько я помню, поведение sudo можно в sudoers подправить

Fedora & GNOME
Спасибо сказали: zrpg1

3

терминал ещё можно понять, он открывает окно, а вот vim запускается прямо в этом же терминале. Или так и должно быть?

А зачем тогда вообще ключ -H, если и с ним и без него одинаковый результат.

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.

4

http://unixforum.org/index.php?showtopic=118938
теперь многое понял.
Возник другой вопрос. Раньше в sudo срабатывало автодополнение по tab, а теперь нет. Это только у меня так?

x86_64, Xfce
английский язык скудный, невыразительный, торопливый, пишется и говорится по разному.