Ao trabalhar na linha de comando, geralmente mudo para sudo usando sudo -i
. No entanto, meu diretório de trabalho muda automaticamente para /root
. Eu nunca quero ir para lá; Eu quero ficar onde estava! Como posso conseguir isso?
25
sudo -iu
funciona para mim ubuntuforums.org/…sudo -i
ainda estão corrompidos pelos env do usuário. A única maneira de evitar isso é usarsu -l
.Se você deseja usar
su
, existe uma maneira de permanecer no mesmo diretório.Oque esta acontecendo aqui:
su - user
= faça login comouser
-c
o que significa "executar um comando no shell do novo usuário"-c "cd `pwd`"
o comando que damos é alternar para o diretório atual (`pwd`
) - mas, como usamos os backticks entre aspas duplas, opwd
comando é avaliado antes de executar osu
comando, para que realmente mudemos para o diretório em que estamos agora, como o antigo do utilizador.-c 'cd `pwd`'
executaria opwd
comando no novo shell, para avaliar issocd /root
, o que, é claro, não realizará nada.O único problema aqui é que o novo shell sai logo após a execução do comando, então adicionamos:
-c "cd `pwd`; bash"
o que significa "executarbash
(novo shell) depois de executar ocd
comando. O shell bash não sai até que o encerramos .Observe que você pode substituir
`pwd`
por$(pwd)
. Eles são funcionalmente iguais, mas a abundância de caracteres parecidos com aspas pode se tornar difícil de ler.fonte
Eu enfrentei o mesmo problema e não tenho permissão para executar outra coisa senão
sudo su - devuser
no servidor de desenvolvimento, então é isso que eu criei:Ele sobe em uma árvore de processos e verifica se o usuário proprietário do processo foi alterado.
fonte