[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Sudo + function?
From: |
Leandro Santiago |
Subject: |
Re: [shell-script] Sudo + function? |
Date: |
Sat, 17 Jan 2009 15:41:44 -0200 |
Não não...
Você deve declarar e executar a função dentro do subshell que o sudo
executará.
Entenda a declaração e a execução como um só comando, que será passado como
argumento para o executável bash (suponho que seja o bash, não?).
O parâmetro -c do bash indica que você executará o parâmetro passado, no
caso os comandos de declaração e de execução.
Você poderia jogar estes comandos numa variável e depois passá-la para o
bash que será executado pelo sudo:
COMANDO="function rkonq()
{
export KDEROOTHOME=/home/alain/.kde0
konqueror --profile filemanagement
}
rkonq
"
E em seguida execute:
sudo bash -c "$COMANDO"
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ó...
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
[As partes desta mensagem que não continham texto foram removidas]