sudo lembra sua senha por algum tempo (15 minutos por padrão). Você pode fazer o sudo esquecer a senha executando sudo -k
Eu tenho um script bash que estou usando para automatizar um checkout do SVN. O conteúdo do arquivo era:
#!/bin/bash
cd /var/www-cake
sudo svn checkout file:///usr/local/svn/bash_repo/repo/
Então, quando eu clico duas vezes no arquivo que ele me perguntava o que fazer, eu clicaria no botão " Executar no Terminal " e então um terminal apareceria e me perguntaria pela senha do SUDO. Eu entraria, o script seria executado e o terminal seria fechado.
Eu queria dar algum tipo de indicação de que o script foi executado com sucesso, então eu editei meu arquivo para parecer:
#!/bin/bash
cd /var/www-cake
sudo svn checkout file:///usr/local/svn/bash_repo/repo/
echo "Head revision has been pushed to live server"
Eu esperava que o terminal permanecesse aberto e me dissesse a mensagem depois. Para minha surpresa, agora se abre e imediatamente se fecha. O script é executado e não preciso mais colocar a senha do SUDO.
Isso está certo? Eu não entendo porque isso está acontecendo, parece ser um problema de segurança.
sudo lembra sua senha por algum tempo (15 minutos por padrão). Você pode fazer o sudo esquecer a senha executando sudo -k
O que acontece quando você executa o script diretamente do terminal? Normalmente, se a senha do sudo tiver sido digitada depois de ser lembrada por 15 minutos. Se você executar graficamente o prompt do terminal será fechado após uma execução completa. Eu não tenho um repo SVN para brincar - no entanto, eu fiz um teste semelhante, que irá reunir a entrada de um usuário e tocar em um arquivo com esse nome.
#!/usr/bin/env bash
echo -n "Hello, enter the file name: "
read NAME
touch $NAME
echo "All done"
Quando executado a partir do terminal:
Em seguida, clique duas vezes:
O aviso fecha quando concluído, mas faz o que é solicitado.
Para manter o prompt aberto após a execução de um script, você pode tentar duas coisas:
read
como a última linha. Para criar um lançador que execute um comando no terminal e mantenha a janela aberta, crie um perfil para o gnome-terminal, por exemplo, Hold, que faz exatamente isso (examine as opções de perfil) e use o seguinte.
gnome-terminal --window-with-profile="Hold" -e "/path/to/script"