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 .