При работе в командной строке я часто переключаюсь на sudo, используя sudo -i
. Однако мой рабочий каталог автоматически меняется на /root
. Я никогда не хочу туда идти; Я хочу остаться там, где я был! Как мне этого добиться?
25
Вы можете использовать sudo -s
вместо этого, это не изменит ваш текущий каталог на /root
, хотя некоторые из ваших переменных среды не будут те из корневого каталога .
На этой странице форумов Ubuntu есть хорошая сводка:
Summary of the differences found
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
Эта страница из документации по Ubuntu содержит гораздо больше справочной информации о sudo .
sudo -iu
работает для меня ubuntuforums.org/…sudo -i
все еще поврежден env vars пользователя. Единственный способ избежать этого - использоватьsu -l
.Если вы хотите использовать
su
, есть способ остаться в том же каталоге.Что тут происходит:
su - user
= войдите какuser
-c
что означает «запустить команду в оболочке нового пользователя»-c "cd `pwd`"
команда, которую мы даем, - это переключиться на текущий каталог (`pwd`
) - но поскольку мы используем обратные кавычки в двойных кавычках,pwd
команда оценивается до того, как мы ее запустимsu
, так что мы фактически переключаемся на каталог, в котором мы сейчас СЕЙЧАС, как старый пользователь.-c 'cd `pwd`'
будет выполнятьpwd
команду в новой оболочке, так что это будет оцениватьсяcd /root
, что, конечно, ничего не добьется.Единственная проблема здесь в том, что новая оболочка закрывается сразу после выполнения команды, поэтому мы добавляем:
-c "cd `pwd`; bash"
что означает «запуститьbash
(новая оболочка) после выполненияcd
команды. Оболочка bash не завершится, пока мы не выйдем из нее.Обратите внимание, что вы можете заменить
`pwd`
на$(pwd)
. Они функционально одинаковы, но обилие цитатоподобных символов может стать трудночитаемым.источник
Я столкнулся с той же проблемой, и мне не разрешено запускать что-либо, кроме как
sudo su - devuser
на сервере dev, поэтому я пришел к такому выводу:Он просматривает дерево процессов и проверяет, изменился ли пользователь, владеющий процессом.
источник