alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'
Eu gostaria de criar um alias que faça algo assim:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
Então, na minha linha de comando, estou logado com um usuário sudoer e gostaria de digitar o alias userYYY
para que meu shell agora seja registrado com userYYY
e pwd
is /a/path/that/only/userYYY/has/access
Como posso fazer isso? Este userYYY
é para executar alguns processos, e deve haver algo em sua casa. Por isso, tentei alterar o seu $ HOME usando:
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
E a partir do muy shell com meu arquivo sudoer eu fiz sudo su userYYY
. Mas isso não funcionou. O único que funcionou foi sudo su -l userYYYY
mas que abriu um novo bash dentro do meu shell original ... ( -bash-4.1$.....
).
Em resumo ... o que eu quero é simplesmente evitar ter que escrever 2 linhas no meu shell:
sudo su userYYY
cd /a/path/that/only/userYYY/has/access
Alguma idéia?
Agradecemos antecipadamente
Uma opção seria editar ~/.bashrc
do usuário de destino e adicionar cd
lá:
cd /a/path/that/only/userYYY/has/access
Resposta curta - você não pode. O sudo su
inicia um novo shell que deve sair antes de chegar ao comando cd
.
Para mim, uma combinação de sudo
e screen
funcionou:
sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'
Este comando primeiro muda para o usuário vagrant
. Então, como vagrant
altera o diretório para /vagrant
e executa npm install
.