Podczas pracy z wierszem poleceń często zmieniam na sudo sudo -i
. Jednak mój katalog roboczy zmienia się automatycznie na /root
. Nigdy nie chcę tam iść; Chcę zostać tam, gdzie byłem! Jak mogę to osiągnąć?
25
Możesz użyć sudo -s
zamiast tego, to nie zmieniłoby twojego bieżącego katalogu na /root
, chociaż niektóre twoje zmienne środowiskowe nie byłyby tymi z katalogu głównego.
Ta strona z forum Ubuntu ma ładne podsumowanie:
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
Ta strona z dokumentacji Ubuntu zawiera znacznie więcej podstawowych informacji na temat sudo .
sudo -iu
działa dla mnie ubuntuforums.org/…sudo -i
są nadal uszkodzone przez zmienne środowiskowe użytkownika. Jedynym sposobem na uniknięcie tego jest użyciesu -l
.Jeśli chcesz użyć
su
, możesz pozostać w tym samym katalogu.Co tu się dzieje:
su - user
= zaloguj się jakouser
-c
co oznacza „uruchom polecenie w powłoce nowego użytkownika”-c "cd `pwd`"
polecenie, które dajemy, polega na przełączeniu do bieżącego katalogu (`pwd`
) - ale ponieważ używamy backticków w podwójnych cudzysłowach,pwd
polecenie jest sprawdzane przed uruchomieniemsu
polecenia, dzięki czemu faktycznie przełączamy się do katalogu, w którym jesteśmy NOW jako stary użytkownik.-c 'cd `pwd`'
wykonałbypwd
polecenie w nowej powłoce, więc oceniłoby tocd /root
, co, oczywiście, niczego nie osiągnie.Jedynym problemem jest to, że nowa powłoka kończy pracę zaraz po uruchomieniu polecenia, więc dodajemy:
-c "cd `pwd`; bash"
co oznacza „uruchombash
(nowa powłoka) po uruchomieniucd
polecenia. Powłoka bash nie kończy działania, dopóki się z niej nie wylogujemy.Pamiętaj, że możesz zamienić
`pwd`
z$(pwd)
. Są funkcjonalnie takie same, ale obfitość znaków podobnych do cytatów może być trudna do odczytania.źródło
Napotkałem ten sam problem i nie wolno mi uruchamiać niczego innego niż
sudo su - devuser
na serwerze deweloperskim, więc wymyśliłem:Przechodzi do drzewa procesów i sprawdza, czy użytkownik będący właścicielem procesu zmienił się.
źródło