Eu estou em um sistema multiusuário. Eu tenho sudo b / c eu sou responsável, eu acho. Às vezes, eu quero mudar para outro usuário para ajudá-los a fazer algo, mas eu tenho um bashrc / vimrc enganado e eu gostaria de mantê-los.
Para root, é bem fácil. No meu .bashrc
:
alias sudo='sudo '
alias -- -i='bash --rcfile $HOME/.bashrc'
export HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
Basicamente, isso significa que sudo -i
me faz root, origina meu .bashrc
e mantém meu $HOME
como /home/jeremy
em vez de /root
, significando que o vim procura no local apropriado para cores, rcfiles e coisas.
Eu quero fazer algo semelhante com outros usuários. O ideal:
source meu .bashrc
; obtenha o vim para usar meu .vim/
material como vimrc
, colors/
, etc.
não codifica caminhos - em alguns sistemas eu sou jeremy
; em outros eu sou jdr
, etc.
requer uma digitação extra mínima para que tudo isso funcione aliasing ou funcione com as coisas ruins.
Para o root, consegui alias -i
para outro comando totalmente que fez o que eu queria. man bash
não lista nenhuma opção para fazer as coisas como outro usuário. man sudo
faz, mas eu não teria nenhuma opção para obter um .bashrc
. su
parecia promissor, pois man su
diz que su -m
preserva o ambiente e não define USER ou HOME, mas eu teria que sudo su -m
, que define meu USER para root
. Eu não posso adicionar comandos usando &&
ou algo assim porque eu precisaria dos comandos para executar no novo shell em vez de depois que o shell sai. Em suma, nenhum dos comandos que conheço pode fazer o que eu quero.
O mais próximo que consegui foi sudo -Esu user
, o que me torna user
e mantém todos os vars que eu exportei. Eu poderia colocar algo como export x=". $HOME/.bashrc"
em meu .bashrc
e, em seguida, eval $x
quando eu me tornar user
, mas isso dá erros de permissão e definir + x em .bashrc
não é suficiente porque as permissões padrão do meu diretório home impedem acesso por outros usuários e não tenho certeza se gostaria de mudar isso a menos que não haja outra opção. Nem todos os usuários que eu estou me tornando têm privilégios, então não posso apenas sudo
meu caminho.
TL; DR: torna-se outro usuário enquanto mantém as configurações de aliases, funções, PS1, PROMPT_COMMAND e vim do meu usuário atual. Bash 4.2