Cuando trabajo en la línea de comando, a menudo cambio a sudo usando sudo -i
. Sin embargo, mi directorio de trabajo cambia automáticamente a /root
. Nunca quiero ir allí; ¡Quiero quedarme donde estaba! ¿Cómo puedo conseguir esto?
25
sudo -iu
funciona para mí ubuntuforums.org/…sudo -i
todavía está dañado por los env env del usuario. La única forma de evitar esto es usarlosu -l
.Si desea usar
su
, hay una manera de permanecer en el mismo directorio.Que está pasando aqui:
su - user
= iniciar sesión comouser
-c
lo que significa "ejecutar un comando en el nuevo shell del usuario"-c "cd `pwd`"
el comando que damos es cambiar al directorio actual (`pwd`
), pero debido a que usamos las comillas inversas entre comillas dobles, elpwd
comando se evalúa antes de ejecutar elsu
comando, de modo que realmente cambiemos al directorio en el que estamos AHORA como el antiguo usuario.-c 'cd `pwd`'
ejecutaría elpwd
comando en el nuevo shell, por lo que esto evaluaríacd /root
, lo que, por supuesto, no logrará nada.El único problema aquí es que el nuevo shell sale justo después de ejecutar el comando, por lo que agregamos:
-c "cd `pwd`; bash"
lo que significa "ejecutarbash
(nuevo shell) después de ejecutar elcd
comando. El shell bash no se cierra hasta que cerramos la sesión.Tenga en cuenta que puede reemplazar
`pwd`
con$(pwd)
. Funcionalmente son iguales, pero la abundancia de caracteres tipo comillas puede ser difícil de leer.fuente
Me he enfrentado al mismo problema y no se me permite ejecutar nada más que
sudo su - devuser
en el servidor de desarrollo, así que esto es lo que se me ocurrió:Sube un árbol de procesos y comprueba si el usuario propietario del proceso cambió.
fuente