|
From: | Alain M. |
Subject: | Re: [shell-script] Sudo + function? |
Date: | Mon, 19 Jan 2009 16:18:44 -0200 |
User-agent: | Thunderbird 2.0.0.17 (X11/20080914) |
Oi Leandro, Obrigado, agora funcionou e ficou ao mesmo tempo prático e elegante.É interessante como é o raciocínio em shell-script, primeiro você demora um tempão para entender o problema (o que eu já tinha feito) depois ainda é necessário encontrar uma solução, e dpois ainda, uma maneira de implementá-la.
Aqui um resumo da solução para poder arquivar: Leandro Santiago escreveu:
Você deve declarar e executar a função dentro do subshell que o sudo executará. COMANDO="function rkonq() { export KDEROOTHOME=/home/alain/.kde0 konqueror --profile filemanagement } rkonq " sudo bash -c "$COMANDO"
Eu uso isto para ter um ícone (pintado de vermelho) que abre uma janela (com fundo vermelho) e poder acessar rapidamente configurações da máquina.
Grato, Alain
E... Ah sim, você deve proteger as variáveis que sejam utilizadas dentro da função, por exemplo: COMANDO="function rkonq() { export KDEROOTHOME=/home/alain/.kde0 echo \$KDEROOTHOME #cifrão protegido } rkonq " sudo bash -c "$COMANDO" 2009/1/17 Julio C. Neves <address@hidden>Fala Alain até onde eu saiba, porém o bash é muito dinâmico e isso pode ter mudado, além do *builtin* declare, existem 2 formas de vc especificar uma função: function funcao { ... } ou: funcao () { ... } Como vc fez: function funcao () creio que seu erro está aí. Experimente tirar os parenteses ou o function. -- Abração, Julio *Cursos de Shell e Zenity nos finais de semana: - Em SP ligue (11) 2125-4747; - Em DF ligue (61) 3223-3000; - Turmas fechadas em outras cidades ligue (21) 8112-9988 * 2009/1/17 Alain M. <address@hidden <alainm%40pobox.com>>Tento este script: function rkonq() { export KDEROOTHOME=/home/alain/.kde0 konqueror --profile filemanagement } sudo rkonq Me retorna este erro: sudo: rkonq: command not found Como faço para chamar uma função com sudo??? Grato, Alain PS: eu consegui fazer com dois scrips, um chamando o outro, mas gostaria de fazer tudo com um script só...
[Prev in Thread] | Current Thread | [Next in Thread] |