Exportando uma variável para que apareça em um script proveniente do sudo

2

Eu tenho um script bash / s que tem um script "main" que é executado como sudo .
Variáveis são declaradas neste script.
Em seguida, ele origina outro script commands.sh , no entanto, esse script usa sudo para retornar a um usuário comum ao fazer o sourcing do script commands.sh .

arquivo

: main.sh

#!/bin/bash

user=ubuntu
export $user

sudo -u $user bash -c "source includes-shared/commands.sh"
arquivo

: includes-shared/commands.sh

# debug command to see if $user is available
printenv
[ more commands...]

A variável $user não aparece mais neste script commands.sh , ou seja, não é visível para printenv ou outros comandos.
Como posso exportar $user para que esteja disponível para o script de origem?

    
por the_velour_fog 18.04.2016 / 07:53

1 resposta

3

Você precisa executar a exportação em relação ao nome da variável. No momento, a variável está sendo referenciada e substituída antes que a exportação a veja.

Altere para isto:

export user

Observe a falta de $

Sua versão atual é essencialmente isto:

export ubuntu

Porque $user é interpretado primeiro.

Você também perdeu suas variáveis ambientais ao usar o sudo. Existem duas maneiras de preservá-las. Mantenha todo o seu ambiente

sudo -E -u $user command

Ou apenas mantenha a variável que você precisa

sudo user=$user -u $user command
    
por 18.04.2016 / 08:32