Acho que a razão pela qual isso não funciona é que os dois comandos alias
são executados após a sessão bash
iniciada por sudo
finishes. Você poderia
faça um teste - crie o script, quando a nova sessão começar, pressione
Ctrl - d para sair e depois no tipo de shell original:
$ type cd1
cd1 is aliased to 'cd /dir/one/'
$ type cd2
cd2 is aliased to 'cd /dir/two/'
Posso conseguir o que você quer com o script expect
, mas não sou especialista
sobre isso tão crítica é bem vinda:
#!/usr/bin/expect -f
spawn sudo -u otheruser -i
send "alias cd1='cd /dir/one/'"
send "\n"
send "alias cd2='cd /dir/two/'"
send "\n"
interact
Certifique-se de ter expect
instalado antes de executar este
roteiro.
Você pode instalar expect
e tcl
(o que é necessário) usando o gerenciador de pacotes do seu sistema. Se você precisar instalá-lo manualmente, consulte as instruções para Esperar no link . Os arquivos README / INSTALL para o Expect apontam você em alguns locais para obter o Tcl, mas estes parecem desatualizados. No entanto, você pode obter uma cópia do Tcl do ActiveState.