Como posso sudo su e mudar de diretório logo depois?

7

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

    
por Mariano Martinez Peck 18.09.2014 / 21:13

4 respostas

8
alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'
    
por 18.09.2014 / 22:09
1

Uma opção seria editar ~/.bashrc do usuário de destino e adicionar cd lá:

cd /a/path/that/only/userYYY/has/access
    
por 21.02.2017 / 15:05
0

Resposta curta - você não pode. O sudo su inicia um novo shell que deve sair antes de chegar ao comando cd .

    
por 18.09.2014 / 21:17
0

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 .

    
por 06.11.2015 / 16:32

Tags